BroadNet
Le JournalIngénierie
Ingénierie

Remplissage automatique SMS OTP : Android SMS Retriever, iOS one-time-code et le format de message WebOTP

Les codes SMS peuvent s'auto-remplir sur Android, iOS et le web si le message est formaté à cet effet : un hash d'application de 11 caractères pour le SMS Retriever de Android, autocomplete="one-time-code" pour iOS et Safari, et une dernière ligne de @your-domain #code pour WebOTP. Voici chaque format et un modèle unique compatible avec les trois.

8 min de lecture
Ingénierie · Numéro 40
8 min de lecture

es codes à usage unique SMS peuvent s'auto-remplir si le message est formaté pour la plateforme. Sur Android, le SMS Retriever API lit un message ne dépassant pas 140 octets, contenant le code et incluant un hash de 11 caractères qui identifie votre application. Sur iOS et dans Safari, marquez le champ de saisie avec autocomplete="one-time-code" (textContentType oneTimeCode dans les applications natives) et le clavier suggérera le code. Sur le web, le WebOTP API lit un message dont la dernière ligne est @your-domain #code. Un seul modèle peut satisfaire les trois.

Points clés à retenir

  • Le remplissage automatique évite le passage d'une application à l'autre, évitant ainsi la perte d'utilisateurs entre la réception et la saisie du code.
  • Android SMS Retriever : message de 140 octets maximum, contenant le code et votre hash d'application de 11 caractères ; aucune autorisation SMS requise.
  • Android SMS User Consent : pas de hash ; le message doit contenir un code alphanumérique de 4 à 10 caractères avec au moins un chiffre ; l'utilisateur appuie pour autoriser.
  • iOS et Safari : autocomplete="one-time-code" sur le champ de saisie ; la dernière ligne liée au domaine permet la suggestion de Safari.
  • WebOTP : dernière ligne @domain #code, sans schéma, port ou chemin ; pris en charge par Chrome sur Android et sur ordinateur.

Pourquoi le remplissage automatique OTP est-il important ?

Chaque étape entre l'« envoi du code » et la « saisie du code » entraîne une perte d'utilisateurs : basculer vers l'application de messagerie, mémoriser les six chiffres, puis revenir. L'autocomplétion transforme cela en un simple clic. Elle réduit également les erreurs de saisie et, grâce aux codes liés au domaine, rend plus difficile la manipulation d'un utilisateur pour qu'il saisisse un code sur un site frauduleux. Cela ne résout pas le problème de la livraison : le code doit toujours arriver rapidement ; associez donc l'autocomplétion à une route rapide et à une solution de secours. Consultez les meilleures pratiques de livraison de OTP.

Comment fonctionne le Android SMS Retriever API ?

Le SMS Retriever API permet à votre application Android de recevoir le message de vérification sans demander l'autorisation de lecture à SMS. La documentation de Google définit trois règles pour le message :

  • ne pas dépasser 140 octets ;
  • contenir le mot de passe à usage unique que l'application renvoie à votre serveur ;
  • inclure une chaîne de hachage de 11 caractères qui identifie votre application.

Le hachage est calculé à partir du nom du package de votre application et de son certificat de signature : ajoutez le nom du package à la forme hexadécimale du certificat, prenez le SHA-256, encodez-le en base64 et conservez les 11 premiers caractères. Les builds de débogage et de production sont généralement signés avec des clés différentes, ils ont donc des hachages différents. Votre serveur ajoute le bon hachage lors de la construction du message.

Lorsque vous ne pouvez pas inclure de hachage d'application dans le message, par exemple parce que le modèle est partagé avec d'autres canaux, la SMS User Consent API de Android affiche une invite à l'utilisateur pour lui permettre à votre application de lire un message. Selon Google, le message doit contenir une chaîne alphanumérique de 4 à 10 caractères comprenant au moins un chiffre et, si vous avez spécifié un identifiant d'expéditeur, provenir de cet expéditeur. La API écoute pendant environ cinq minutes après son activation, puis expire.

Comment fonctionne l'autocomplétion OTP sur iOS ?

iOS propose le remplissage automatique du code de sécurité depuis le clavier. Dans une application native, réglez le textContentType du champ de texte sur oneTimeCode ; sur une page web, ajoutez autocomplete="one-time-code" à l'input. Lorsqu'un SMS correspondant arrive, le code s'affiche au-dessus du clavier et l'utilisateur n'a plus qu'à cliquer dessus. Safari n'implémente pas le WebOTP JavaScript API, mais la documentation WebOTP de Chrome précise qu'avec l'annotation d'autocomplétion, le clavier par défaut suggère le code si le SMS respecte le format lié au domaine ci-dessous (iOS 14 et macOS Big Sur ou versions ultérieures).

Quel est le format de message WebOTP ?

Le API WebOTP permet à une page web de lire le code avec navigator.credentials.get({ otp: { transport: ['sms'] } }). Le SMS doit commencer par un texte lisible par l'humain et se terminer par une dernière ligne sous cette forme :

snippet
Your BroadNet code is 482913.
@www.example.com #482913
  • La dernière ligne commence par @ suivi du domaine de la page qui demande le code.
  • Un espace unique, puis # et le code.
  • Aucun protocole, port ou chemin dans le domaine, et aucun espace à l'intérieur.
  • La partie lisible par l'humain doit également contenir le code, pour les personnes qui lisent le message.

Conservez toujours autocomplete="one-time-code" sur l'input, afin que les navigateurs sans WebOTP puissent tout de même proposer le code.

Un modèle SMS unique peut-il fonctionner sur toutes les plateformes ?

Oui, s'il respecte la limite de Android octets et que les lignes sont dans le bon ordre. Voici un modèle combiné :

snippet
Your BroadNet code is 482913. Do not share it.
FA+9qCX9VSu
@www.example.com #482913
PlateformeLecture du codeContenu requis pour le message
Application AndroidSMS Retriever APILe code et votre empreinte (hash) d'application de 11 caractères ; au maximum 140 octets
Application Android (sans empreinte)API SMS User ConsentUn code alphanumérique de 4 à 10 caractères comprenant au moins un chiffre
Application iOSRemplissage automatique du code de sécurité (oneTimeCode)Un code reconnaissable ; ligne liée au domaine recommandée
Safari (iOS, macOS)autocomplete="one-time-code"Dernière ligne @domain #code
Chrome (Android, bureau)WebOTP APIDernière ligne @domain #code

Le hash affiché est un exemple : utilisez la valeur de votre propre application. Conservez le modèle dans le jeu de caractères GSM-7 pour qu'il reste sur un seul segment ; un emoji ou une lettre accentuée bascule l'ensemble du message en Unicode, ce qui réduit l'espace de moitié et peut compromettre le budget de 140 octets. Consultez l'encodage et la segmentation SMS.

Comment envoyer ces messages avec BroadNet ?

Construisez le message sur votre serveur et envoyez-le via la OTP API ou la SMS API ; les sauts de ligne font partie du texte du message. Le produit OTP de BroadNet bascule sur SMS, WhatsApp, la voix et Flash Call lorsqu'un code n'arrive pas, et MyOTP.App envoie des codes par SMS, WhatsApp ou Telegram depuis un seul compte. Pour l'ensemble du flux, consultez comment construire un flux OTP et notre guide de vérification OTP multicanal.

Foire aux questions

Pourquoi mon application Android ne lit-elle pas le OTP SMS ?

Généralement, le hash de l'application dans le message ne correspond pas à la version (les clés debug et release diffèrent), le message est plus long que 140 octets, ou l'écouteur a démarré après l'arrivée du message.

Ai-je besoin de l'autorisation SMS pour le remplissage automatique des codes sur Android ?

Non. Le API SMS Retriever et le API SMS User Consent fonctionnent tous deux sans l'autorisation de lecture SMS.

Comment activer le remplissage automatique OTP sur iOS ?

Configurez textContentType sur oneTimeCode dans une application native, ou ajoutez autocomplete="one-time-code" au champ de saisie sur une page web.

Quel est le format SMS WebOTP ?

Le texte lisible par l'humain en premier, puis une dernière ligne commençant par @ suivie de votre domaine, un espace, # et le code, par exemple @www.example.com #482913.

Est-ce que WebOTP fonctionne sur Safari ?

Safari ne prend pas en charge le WebOTP JavaScript API, mais avec autocomplete="one-time-code", son clavier suggère des codes provenant de messages au format lié au domaine.

Puis-je utiliser un seul modèle pour Android, iOS et le web ?

Oui : le code dans le texte, le hash de l'application sur sa propre ligne, et la ligne liée au domaine en dernier, le tout dans la limite de 140 octets.

Les règles de la plateforme ont été consultées le 28 septembre 2026 dans la documentation SMS Retriever et SMS User Consent de Google (developers.google.com) ainsi que dans la documentation WebOTP de Chrome (developer.chrome.com). Consultez nos normes éditoriales.

Cela vous a-t-il été utile ?

Comment nous rédigeons et vérifions nos contenus

Écrit par

Équipe éditoriale BroadNet

L'équipe éditoriale publie le blog de BroadNet. Les articles sont rédigés avec les équipes BroadNet des affaires réglementaires, des produits, de l'ingénierie, des études de marché et des solutions pour opérateurs, puis relus selon nos normes éditoriales.

Le Journal, par courriel

Un essai par mois. Rien d'autre.

Abonnez-vous et nous vous enverrons le prochain article (ingénierie, réglementation ou industrie) dès sa parution. Pas de campagnes publicitaires intempestives, pas de démarchage commercial, pas de partage avec des tiers. Désabonnement en un clic.

Un e-mail par mois. Désabonnement à tout moment. Consultez notre politique de confidentialité.

Ce que vous obtiendrez
  • Article long, pas un appât à liens.
    Six à onze minutes d'écriture ciblée sur un seul sujet.
  • Rédigé par des opérateurs
    Ingénieurs, responsables réglementaires et rédacteurs de produits en interne.
  • Connaissance de la région
    Point de vue ancré dans la région MENA sur les régulateurs, les opérateurs et la répartition des canaux.
  • Une fois par mois
    Pas de campagne au compte-gouttes. Un seul essai à la fois.
Arrêtez de lire. Commencez à expédier.

La plupart de ce que nous écrivons, nous l'avons appris en production.

Si cet article vous a interpellé, nous devrions probablement en discuter. Présentez-nous votre cas d'utilisation, les volumes et les marchés ; nous vous proposerons ensuite une solution de routage, une tarification et un client de référence que vous pourrez contacter.

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