BroadNet
Il giornaleIngegneria
Ingegneria

Autocompletamento SMS OTP: Android SMS Retriever, iOS one-time-code e il formato messaggio WebOTP

I codici SMS possono essere inseriti automaticamente su Android, iOS e sul web se il messaggio è formattato correttamente: un hash app di 11 caratteri per Android SMS Retriever, autocomplete="one-time-code" per iOS e Safari, e un'ultima riga di @your-domain #code per WebOTP. Ecco ogni formato e un modello valido per tutti e tre.

8 min di lettura
Ingegneria · Numero 40
8 min di lettura

codici monouso SMS possono essere inseriti automaticamente se il messaggio è formattato per la piattaforma. Su Android, il SMS Retriever API legge un messaggio che non superi i 140 byte, contenga il codice e includa un hash di 11 caratteri che identifichi la vostra app. Su iOS e Safari, contrassegnate l'input con autocomplete="one-time-code" (textContentType oneTimeCode nelle app native) e la tastiera suggerirà il codice. Sul web, il WebOTP API legge un messaggio la cui ultima riga è @your-domain #code. Un unico modello può soddisfare tutti e tre i casi.

Punti chiave

  • L'autocompletamento elimina il passaggio tra le app, evitando che gli utenti abbandonino il processo tra la ricezione e l'inserimento del codice.
  • Android SMS Retriever: messaggio di al massimo 140 byte, contenente il codice e l'hash app di 11 caratteri; non è richiesta l'autorizzazione SMS.
  • Android SMS User Consent: nessun hash; il messaggio deve contenere un codice alfanumerico di 4–10 caratteri con almeno un numero; l'utente tocca per consentire.
  • iOS e Safari: autocomplete="one-time-code" sull'input; l'ultima riga legata al dominio abilita il suggerimento di Safari.
  • WebOTP: ultima riga @domain #code, senza schema, porta o percorso; supportato su Chrome su Android e desktop.

Perché l'autocompletamento OTP è importante?

Ogni passaggio tra "codice inviato" e "codice inserito" comporta una perdita di utenti: passare all'app di messaggistica, memorizzare le sei cifre, tornare indietro. L'autocompletamento trasforma tutto questo in un semplice tocco. Riduce inoltre gli errori di digitazione e, grazie ai codici legati al dominio, rende più difficile ingannare l'utente inducendolo a inserire un codice su un sito contraffatto. Non risolve i problemi di consegna: il codice deve comunque arrivare rapidamente, quindi abbina l'autocompletamento a una rotta veloce e a un sistema di fallback. Consulta le best practice di consegna OTP.

Come funziona il Android SMS Retriever API?

Il SMS Retriever API consente alla tua app Android di ricevere il messaggio di verifica senza richiedere il permesso di SMS per la lettura. La documentazione di Google stabilisce tre regole per il messaggio:

  • non deve superare i 140 byte;
  • deve contenere la password monouso che l'app invia al tuo server;
  • deve includere una stringa hash di 11 caratteri che identifica la tua app.

L'hash viene calcolato dal nome del pacchetto della tua app e dal suo certificato di firma: si aggiunge il nome del pacchetto alla forma esadecimale del certificato, si prende il SHA-256, lo si codifica in base64 e si mantengono i primi 11 caratteri. Le build di debug e di rilascio sono solitamente firmate con chiavi diverse, quindi hanno hash differenti. Il tuo server aggiunge l'hash corretto durante la creazione del messaggio.

Quando non è possibile inserire l'hash dell'app nel messaggio, ad esempio perché il template è condiviso con altri canali, il SMS User Consent API di Android mostra all'utente un prompt per consentire alla tua app di leggere un messaggio. Secondo Google, il messaggio deve contenere una stringa alfanumerica di 4–10 caratteri con almeno un numero e, se è stato specificato un mittente, deve provenire da quel mittente. Il API resta in ascolto per circa cinque minuti dopo l'avvio e poi scade.

Come funziona l'autocompletamento OTP su iOS?

iOS offre l'autocompletamento del codice di sicurezza direttamente dalla tastiera. In un'app nativa, impostare l'attributo textContentType del campo di testo su oneTimeCode; su una pagina web, aggiungere autocomplete="one-time-code" all'input. Quando arriva un SMS corrispondente, il codice appare sopra la tastiera e l'utente può toccarlo. Safari non implementa il WebOTP JavaScript API, ma la documentazione WebOTP di Chrome specifica che, con l'annotazione autocomplete, la tastiera predefinita suggerisce il codice se l'SMS segue il formato legato al dominio riportato di seguito (iOS 14 e macOS Big Sur o versioni successive).

Cos'è il formato del messaggio WebOTP?

Il API WebOTP consente a una pagina web di leggere il codice tramite navigator.credentials.get({ otp: { transport: ['sms'] } }). Il SMS deve iniziare con un testo leggibile dall'uomo e terminare con un'ultima riga in questo formato:

snippet
Your BroadNet code is 482913.
@www.example.com #482913
  • L'ultima riga inizia con @ seguito dal dominio della pagina che richiede il codice.
  • Un singolo spazio, poi # e il codice.
  • Nessuno schema, porta o percorso nel dominio, e nessun spazio al suo interno.
  • La parte leggibile dall'uomo dovrebbe contenere anche il codice, per le persone che leggono il messaggio.

Mantenere sempre autocomplete="one-time-code" anche nell'input, in modo che i browser senza WebOTP possano comunque offrire il codice.

Un unico template SMS può funzionare su ogni piattaforma?

Sì, purché rimanga entro il limite di Android byte e le righe siano nell'ordine corretto. Un template combinato:

snippet
Your BroadNet code is 482913. Do not share it.
FA+9qCX9VSu
@www.example.com #482913
PiattaformaLettore del codiceRequisiti del messaggio
app AndroidSMS Retriever APIIl codice e l'hash dell'app di 11 caratteri; al massimo 140 byte
app Android (senza hash)API SMS User ConsentUn codice alfanumerico di 4–10 caratteri con almeno un numero
app iOSCompilazione automatica del codice di sicurezza (oneTimeCode)Un codice riconoscibile; si raccomanda una riga legata al dominio
Safari (iOS, macOS)autocomplete="one-time-code"Ultima riga @domain #code
Chrome (Android, desktop)WebOTP APIUltima riga @domain #code

L'hash visualizzato è un segnaposto: utilizzare il valore della propria app. Mantenere il template nel set di caratteri GSM-7 affinché rimanga un unico segmento; un'emoji o una lettera accentata convertono l'intero messaggio in Unicode, dimezzando lo spazio disponibile e rischiando di superare il limite di 140 byte. Consultare codifica e segmentazione SMS.

Come si inviano questi messaggi con BroadNet?

Costruisci il messaggio sul tuo server e invialo tramite il OTP API o il SMS API; gli a capo fanno parte del testo del messaggio. Il prodotto OTP di BroadNet prevede il fallback su SMS, WhatsApp, voce e Flash Call quando un codice non arriva, e MyOTP.App invia i codici tramite SMS, WhatsApp o Telegram da un unico account. Per l'intero flusso, consulta come costruire un flusso OTP e la nostra guida alla verifica multichannel OTP.

Domande frequenti

Perché la mia app Android non legge l'SMS con l'OTP?

Solitamente l'hash dell'app nel messaggio non corrisponde alla build (le chiavi debug e release sono diverse), il messaggio è più lungo di 140 byte o il listener è stato avviato dopo l'arrivo del messaggio.

Ho bisogno del permesso SMS per la compilazione automatica dei codici su Android?

No. Sia il API SMS Retriever che il API SMS User Consent funzionano senza il permesso di lettura SMS.

Come attivo la compilazione automatica OTP su iOS?

Imposta textContentType su oneTimeCode in un'app nativa, oppure aggiungi autocomplete="one-time-code" all'input in una pagina web.

Qual è il formato WebOTP SMS?

Prima il testo leggibile dall'uomo, poi un'ultima riga con @ seguita dal tuo dominio, uno spazio, # e il codice, ad esempio @www.example.com #482913.

WebOTP funziona su Safari?

Safari non supporta il JavaScript API di WebOTP, ma con autocomplete="one-time-code" la tastiera suggerisce i codici dai messaggi nel formato domain-bound.

Posso usare un unico template per Android, iOS e web?

Sì: il codice nel testo, l'app hash su una riga dedicata e la riga domain-bound per ultima, il tutto entro 140 byte.

Le regole della piattaforma sono state consultate il 28 settembre 2026 nella documentazione SMS Retriever e SMS User Consent di Google (developers.google.com) e nella documentazione WebOTP di Chrome (developer.chrome.com). Consulta i nostri standard editoriali.

È stato utile?

Come scriviamo e revisioniamo i contenuti

Scritto da

Team editoriale di BroadNet

Il team editoriale pubblica il blog di BroadNet. Gli articoli sono scritti con i team BroadNet di affari regolatori, prodotto, ingegneria, ricerche di settore e soluzioni per gli operatori, e rivisti secondo i nostri standard editoriali.

La rivista, via e-mail

Un saggio al mese. Nient'altro.

Iscriviti e ti invieremo il prossimo articolo – su ingegneria, regolamentazione o industria – il giorno stesso della sua pubblicazione. Nessuna campagna di email marketing, nessuna presentazione di prodotti, nessuna condivisione con terze parti. Puoi disiscriverti con un solo clic.

Inviamo un'email al mese. Puoi disiscriverti in qualsiasi momento. Consulta la nostra informativa sulla privacy.

Cosa otterrai
  • Articolo di lunga durata, non un semplice titolo acchiappa-link.
    Da sei a undici minuti di scrittura mirata su un singolo argomento.
  • Scritto dagli operatori
    Ingegneri, responsabili degli aspetti normativi e redattori di prodotto interni.
  • Consapevole della regione
    Una prospettiva basata sulla regione MENA in merito a regolatori, operatori e mix di canali.
  • Una volta al mese
    Niente campagne a goccia. Un solo saggio quando ce n'è uno da condividere.
Smetti di leggere. Inizia a spedire.

Gran parte di ciò che scriviamo l'abbiamo imparato durante la produzione.

Se questo articolo ti ha fatto annuire, probabilmente dovremmo parlarne. Descrivi il caso d'uso, i volumi, i mercati: ti forniremo informazioni su come procedere, sui prezzi e su un cliente di riferimento che potrai contattare.

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