ódigos de palavra-passe de uso único SMS podem ser preenchidos automaticamente se a mensagem estiver formatada para a plataforma. No Android, o SMS Retriever API lê uma mensagem que não ultrapasse 140 bytes, contenha o código e inclua um hash de 11 caracteres que identifique a sua aplicação. No iOS e no Safari, marque o campo de entrada com autocomplete="one-time-code" (textContentType oneTimeCode em aplicações nativas) e o teclado sugerirá o código. Na web, o WebOTP API lê uma mensagem cuja última linha é @your-domain #code. Um único modelo pode atender aos três.
Principais conclusões
- O preenchimento automático elimina a alternância de aplicações que faz com que os utilizadores se percam entre a receção e a digitação de um código.
- Android SMS Retriever: mensagem de no máximo 140 bytes, contendo o código e o seu hash de aplicação de 11 caracteres; não é necessária permissão de SMS.
- Android SMS User Consent: sem hash; a mensagem deve conter um código alfanumérico de 4 a 10 caracteres com pelo menos um número; o utilizador toca para permitir.
- iOS e Safari: autocomplete="one-time-code" no campo de entrada; a última linha vinculada ao domínio permite a sugestão do Safari.
- WebOTP: última linha @domain #code, sem esquema, porta ou caminho; suportado no Chrome em Android e desktop.
Porque o preenchimento automático OTP é importante?
Cada etapa entre o "código enviado" e o "código inserido" faz você perder utilizadores: alternar para a aplicação de mensagens, memorizar seis dígitos, alternar de volta. O preenchimento automático transforma isso num toque. Também reduz erros de digitação e, com códigos vinculados ao domínio, dificulta enganar o utilizador para inserir um código num site falso. Isso não resolve a entrega: o código ainda precisa chegar rápido, portanto, combine o preenchimento automático com uma rota rápida e um fallback. Veja as melhores práticas de entrega de OTP.
Como funciona o Android SMS Retriever API?
O SMS Retriever API permite que a sua aplicação Android receba a mensagem de verificação sem solicitar permissão de leitura de SMS. A documentação da Google estabelece três regras para a mensagem:
- não ter mais de 140 bytes;
- conter a palavra-passe de uso único que a aplicação envia de volta para o seu servidor;
- incluir uma string de hash de 11 caracteres que identifica a sua aplicação.
O hash é calculado a partir do nome do pacote da sua aplicação e do seu certificado de assinatura: anexe o nome do pacote à forma hexadecimal do certificado, aplique o SHA-256, codifique em base64 e mantenha os primeiros 11 caracteres. As builds de debug e de release geralmente são assinadas com chaves diferentes, portanto, possuem hashes diferentes. O seu servidor adiciona o hash correto ao construir a mensagem.
O que é o SMS User Consent API?
Quando você não pode incluir um hash da aplicação na mensagem, por exemplo, porque o template é partilhado com outros canais, o SMS User Consent API da Android mostra ao utilizador um prompt para permitir que a sua aplicação leia uma mensagem. De acordo com a Google, a mensagem deve conter uma string alfanumérica de 4 a 10 caracteres com pelo menos um número e, se você especificou um remetente, deve vir desse remetente. O API fica em escuta por cerca de cinco minutos após o início e depois expira.
Como funciona o preenchimento automático da OTP no iOS?
O iOS oferece o preenchimento automático de códigos de segurança diretamente pelo teclado. Numa aplicação nativa, defina o textContentType do campo de texto para oneTimeCode; numa página web, adicione autocomplete="one-time-code" ao campo de entrada. Quando um SMS correspondente chega, o código aparece acima do teclado e o utilizador apenas toca nele. O Safari não implementa o WebOTP JavaScript API, mas a documentação WebOTP do Chrome observa que, com a anotação de preenchimento automático, o teclado padrão sugere o código se o SMS seguir o formato vinculado ao domínio abaixo (iOS 14 e macOS Big Sur ou posterior).
Qual é o formato da mensagem WebOTP?
O WebOTP API permite que uma página web leia o código com navigator.credentials.get({ otp: { transport: ['sms'] } }). O SMS deve começar com um texto legível para humanos e terminar com uma última linha neste formato:
Your BroadNet code is 482913. @www.example.com #482913- A última linha começa com @ e o domínio da página que solicita o código.
- Um único espaço, seguido de # e o código.
- Sem esquema, porta ou caminho no domínio, e sem espaços dentro dele.
- A parte legível para humanos também deve conter o código, para as pessoas que lerem a mensagem.
Mantenha sempre o autocomplete="one-time-code" no campo de entrada também, para que navegadores sem WebOTP ainda ofereçam o código.
Um único modelo de SMS pode funcionar em todas as plataformas?
Sim, desde que permaneça dentro do limite de Android bytes e as linhas estejam na ordem correta. Um modelo combinado:
Your BroadNet code is 482913. Do not share it.FA+9qCX9VSu @www.example.com #482913| Plataforma | O que lê o código | O que a mensagem precisa |
|---|---|---|
| app Android | SMS Retriever API | O código e o hash do seu app de 11 caracteres; no máximo 140 bytes |
| app Android (sem hash) | API de SMS User Consent | Um código alfanumérico de 4 a 10 caracteres com pelo menos um número |
| app iOS | Preenchimento automático de código de segurança (oneTimeCode) | Um código reconhecível; recomenda-se uma linha vinculada ao domínio |
| Safari (iOS, macOS) | autocomplete="one-time-code" | Última linha @domain #code |
| Chrome (Android, desktop) | WebOTP API | Última linha @domain #code |
O hash exibido é um marcador de posição: use o valor da sua própria aplicação. Mantenha o template no conjunto de caracteres GSM-7 para que permaneça num único segmento; um emoji ou letra acentuada altera toda a mensagem para Unicode, o que reduz o espaço pela metade e pode comprometer o limite de 140 bytes. Veja codificação e segmentação SMS.
Como você envia essas mensagens com BroadNet?
Construa a mensagem no seu servidor e envie-a através do OTP API ou do SMS API; quebras de linha fazem parte do texto da mensagem. O produto OTP da BroadNet utiliza redundância via SMS, WhatsApp, voz e Flash Call quando um código não chega, e o MyOTP.App envia códigos por SMS, WhatsApp ou Telegram a partir de uma única conta. Para todo o fluxo, leia como construir um fluxo de OTP e nosso guia de verificação OTP multicanal.
Perguntas frequentes
Porque a minha aplicação Android não está a ler o OTP SMS?
Geralmente, o hash da aplicação na mensagem não corresponde à compilação (as chaves de debug e release são diferentes), a mensagem é maior que 140 bytes ou o listener foi iniciado após a chegada da mensagem.
Preciso de permissão SMS para o preenchimento automático de códigos no Android?
Não. Tanto o API SMS Retriever quanto o API SMS User Consent funcionam sem permissão de leitura SMS.
Como habilito o preenchimento automático OTP no iOS?
Defina textContentType como oneTimeCode numa aplicação nativa ou adicione autocomplete="one-time-code" ao campo de entrada numa página web.
Qual é o formato SMS WebOTP?
Primeiro o texto legível por humanos, seguido por uma última linha com @ seguido do seu domínio, um espaço, # e o código, por exemplo @www.example.com #482913.
O WebOTP funciona no Safari?
O Safari não oferece suporte ao WebOTP JavaScript API, mas com o autocomplete="one-time-code" o teclado sugere códigos de mensagens no formato vinculado ao domínio.
Posso usar um único modelo para Android, iOS e web?
Sim: o código no texto, o hash do app numa linha própria e a linha vinculada ao domínio por último, tudo dentro de 140 bytes.
As regras da plataforma foram consultadas em 28 de setembro de 2026 nas documentações de SMS Retriever e SMS User Consent da Google (developers.google.com) e na documentação de WebOTP do Chrome (developer.chrome.com). Consulte nossos padrões editoriais.
