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

- URL canônico: https://www.broadnet.me/pt/blog/sms-otp-autofill-android-ios-web-guide
- Idioma: pt
- Última atualização: 2026-10-20
- Editor: BroadNet (https://www.broadnet.me)

- Publicado em: 2026-09-28
- Autor: BroadNet Editorial Team

Có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](https://www.broadnet.me/answers/sms-otp-best-practices).

## 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](https://www.broadnet.me/blog/sms-encoding-segmentation-gsm7-ucs2).

## Como você envia essas mensagens com BroadNet?

Construa a mensagem no seu servidor e envie-a através do [OTP API](https://www.broadnet.me/products/otp) ou do [SMS API](https://www.broadnet.me/products/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](https://www.broadnet.me/products/myotp) 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](https://www.broadnet.me/answers/how-to-build-otp-flow) e nosso [guia de verificação OTP multicanal](https://www.broadnet.me/blog/multichannel-otp-verification-api-2026).

## 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](https://www.broadnet.me/about/editorial-standards).
