BroadNet
O JornalEngenharia
Engenharia

Preenchimento automático SMS OTP: Android SMS Retriever, iOS one-time-code e o formato de mensagem WebOTP

Os códigos SMS podem ser preenchidos automaticamente no Android, iOS e na web se a mensagem estiver formatada para isso: um hash de aplicação de 11 caracteres para o SMS Retriever da Android, autocomplete="one-time-code" para iOS e Safari, e uma última linha de @your-domain #code para WebOTP. Aqui está cada formato e um modelo que funciona para os três.

8 min de leitura
Engenharia · Edição 40
8 min de leitura

ó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.

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:

snippet
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:

snippet
Your BroadNet code is 482913. Do not share it.
FA+9qCX9VSu
@www.example.com #482913
PlataformaO que lê o códigoO que a mensagem precisa
app AndroidSMS Retriever APIO código e o hash do seu app de 11 caracteres; no máximo 140 bytes
app Android (sem hash)API de SMS User ConsentUm código alfanumérico de 4 a 10 caracteres com pelo menos um número
app iOSPreenchimento 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.

Isso foi útil?

Como escrevemos e revemos os conteúdos

Escrito por

Equipa Editorial da BroadNet

A Equipa Editorial publica o blog da BroadNet. Os artigos são escritos com as equipas da BroadNet de assuntos regulatórios, produto, engenharia, pesquisa de mercado e soluções para operadoras, e revisados segundo os nossos padrões editoriais.

O jornal, por e-mail

Um ensaio por mês. Nada mais.

Assine e enviaremos o próximo conteúdo — sobre engenharia, regulamentação ou indústria — no mesmo dia em que for publicado. Sem campanhas de e-mail marketing, sem propaganda de produtos, sem partilha com terceiros. Cancele a assinatura com um clique.

Enviamos um e-mail por mês. Cancele quando quiser. Veja nossa política de privacidade.

O que você vai receber
  • Texto longo, não isca para cliques
    De seis a onze minutos de escrita concentrada sobre um único tópico.
  • Escrito por operadores
    Engenheiros, responsáveis pela área regulatória e redação de produtos, tudo feito internamente.
  • Consciente da região
    Uma visão sobre reguladores, operadores e mix de canais com base na região MENA.
  • Uma vez por mês
    Sem campanhas de gotejamento. Um ensaio quando houver apenas um para partilhar.
Pare de ler. Comece a enviar.

A maior parte do que escrevemos aprendemos na prática.

Se você se identificou com este texto, provavelmente deveríamos conversar. Traga o seu caso de uso, os volumes, os mercados — e nós apresentaremos encaminhamento, preços e um cliente de referência para você contactar.

$ curl -X POST https://api.broadnet.me/sms/sendSms