BroadNet
Das JournalEngineering
Engineering

SMS OTP Autofill: Android SMS Retriever, iOS one-time-code und das WebOTP Nachrichtenformat

SMS Codes können sich auf Android, iOS und im Web automatisch ausfüllen, sofern die Nachricht entsprechend formatiert ist: ein 11-stelliger App-Hash für Android SMS Retriever, autocomplete="one-time-code" für iOS und Safari sowie eine letzte Zeile mit @your-domain #code für WebOTP. Hier sind die einzelnen Formate und eine Vorlage, die für alle drei funktioniert.

8 Min. Lesezeit
Engineering · Ausgabe 40
8 Min. Lesezeit

MS Einmalpasswörter können sich automatisch ausfüllen, wenn die Nachricht für die jeweilige Plattform formatiert ist. Auf Android liest der SMS Retriever API eine Nachricht, die nicht länger als 140 Bytes ist, den Code enthält und einen 11-stelligen Hash beinhaltet, der Ihre App identifiziert. Auf iOS und in Safari wird das Eingabefeld mit autocomplete="one-time-code" (textContentType oneTimeCode in nativen Apps) markiert, woraufhin die Tastatur den Code vorschlägt. Im Web liest der WebOTP API eine Nachricht, deren letzte Zeile @your-domain #code ist. Eine Vorlage kann alle drei Anforderungen erfüllen.

Wichtigste Erkenntnisse

  • Autofill verhindert den App-Wechsel, bei dem Nutzer zwischen dem Empfangen und dem Eintippen eines Codes verloren gehen.
  • Android SMS Retriever: Nachricht von maximal 140 Bytes, die den Code und Ihren 11-stelligen App-Hash enthält; keine SMS-Berechtigung erforderlich.
  • Android SMS User Consent: kein Hash; die Nachricht muss einen 4–10-stelligen alphanumerischen Code mit mindestens einer Zahl enthalten; der Nutzer tippt zur Bestätigung.
  • iOS und Safari: autocomplete="one-time-code" auf der Eingabe; die domänengebundene letzte Zeile ermöglicht den Vorschlag durch Safari.
  • WebOTP: letzte Zeile @domain #code, ohne Scheme, Port oder Pfad; unterstützt in Chrome auf Android und Desktop.

Warum ist OTP Autofill wichtig?

Jeder Schritt zwischen „Code gesendet“ und „Code eingegeben“ führt zu Nutzerverlusten: Wechseln zur Nachrichten-App, Merken der sechs Ziffern, Zurückwechseln. Autofill verwandelt dies in ein einfaches Tippen. Es reduziert zudem Tippfehler und erschwert – durch domänengebundene Codes – den Versuch, Nutzer zur Eingabe eines Codes auf einer gefälschten Website zu verleiten. Es löst jedoch nicht das Zustellproblem: Der Code muss weiterhin schnell ankommen. Kombinieren Sie Autofill daher mit einer schnellen Route und einem Fallback. Erfahren Sie mehr unter OTP Best Practices zur Zustellung.

Wie funktioniert der Android SMS Retriever API?

Der SMS Retriever API ermöglicht es Ihrer Android-App, die Verifizierungsnachricht zu empfangen, ohne nach SMS-Leseberechtigungen zu fragen. Die Dokumentation von Google legt drei Regeln für die Nachricht fest:

  • darf nicht länger als 140 Bytes sein;
  • muss das Einmalpasswort enthalten, das die App an Ihren Server zurücksendet;
  • muss einen 11-stelligen Hash-String enthalten, der Ihre App identifiziert.

Der Hash wird aus dem Paketnamen Ihrer App und deren Signaturzertifikat berechnet: Hängen Sie den Paketnamen an die Hex-Form des Zertifikats an, nehmen Sie den SHA-256, führen Sie eine Base64-Kodierung durch und behalten Sie die ersten 11 Zeichen. Debug- und Release-Builds werden in der Regel mit unterschiedlichen Schlüsseln signiert und haben daher unterschiedliche Hashes. Ihr Server fügt den korrekten Hash beim Erstellen der Nachricht hinzu.

Wenn Sie keinen App-Hash in die Nachricht einfügen können – zum Beispiel, weil die Vorlage mit anderen Kanälen geteilt wird –, zeigt die SMS User Consent API von Android dem Nutzer eine Aufforderung an, damit Ihre App eine Nachricht lesen darf. Gemäß Google muss die Nachricht eine 4–10-stellige alphanumerische Zeichenfolge mit mindestens einer Zahl enthalten und, falls Sie eine Absenderkennung angegeben haben, von diesem Absender stammen. Der API lauscht etwa fünf Minuten lang, nachdem Sie ihn gestartet haben, und läuft dann ab.

Wie funktioniert OTP Autofill auf iOS?

iOS bietet die automatische Ausfüllfunktion für Sicherheitscodes direkt über die Tastatur an. In einer nativen App setzen Sie das textContentType des Textfeldes auf oneTimeCode; auf einer Webseite fügen Sie autocomplete="one-time-code" zum Input hinzu. Sobald ein passender SMS eintrifft, erscheint der Code über der Tastatur und der Nutzer kann ihn antippen. Safari implementiert das WebOTP JavaScript API nicht, aber in der WebOTP-Dokumentation von Chrome wird darauf hingewiesen, dass die Standardtastatur den Code mit der Autocomplete-Annotation vorschlägt, sofern der SMS dem unten stehenden, an die Domain gebundenen Format entspricht (iOS 14 und macOS Big Sur oder neuer).

Was ist das WebOTP-Nachrichtenformat?

Das WebOTP API ermöglicht es einer Webseite, den Code mittels navigator.credentials.get({ otp: { transport: ['sms'] } }) zu lesen. Der SMS muss mit einem für Menschen lesbaren Text beginnen und mit einer letzten Zeile in diesem Format enden:

snippet
Your BroadNet code is 482913.
@www.example.com #482913
  • Die letzte Zeile beginnt mit @ und der Domain der Seite, die den Code anfordert.
  • Ein einzelnes Leerzeichen, gefolgt von # und dem Code.
  • Kein Schema, Port oder Pfad in der Domain und keine Leerzeichen innerhalb der Domain.
  • Der für Menschen lesbare Teil sollte den Code ebenfalls enthalten, damit Personen, die die Nachricht lesen, ihn direkt sehen können.

Behalten Sie autocomplete="one-time-code" auch im Input bei, damit Browser ohne WebOTP den Code dennoch vorschlagen.

Kann eine einzige SMS-Vorlage auf jeder Plattform funktionieren?

Ja, sofern sie das Limit von Android Byte nicht überschreitet und die Zeilen in der richtigen Reihenfolge stehen. Eine kombinierte Vorlage:

snippet
Your BroadNet code is 482913. Do not share it.
FA+9qCX9VSu
@www.example.com #482913
PlattformCode-AuslesungAnforderungen an die Nachricht
Android AppSMS Retriever APIDer Code und Ihr 11-stelliger App-Hash; maximal 140 Bytes
Android App (ohne Hash)SMS User Consent APIEin alphanumerischer Code mit 4–10 Zeichen und mindestens einer Zahl
iOS-AppSicherheitscode-Autovervollständigung (oneTimeCode)Ein erkennbarer Code; eine domänengebundene Zeile wird empfohlen
Safari (iOS, macOS)autocomplete="one-time-code"Letzte Zeile @domain #code
Chrome (Android, Desktop)WebOTP APILetzte Zeile @domain #code

Der angezeigte Hash ist ein Platzhalter: Verwenden Sie den Wert Ihrer eigenen App. Behalten Sie die Vorlage im GSM-7-Zeichensatz bei, damit sie ein Segment bleibt; ein Emoji oder ein Akzentzeichen stellt die gesamte Nachricht auf Unicode um, was den Platz halbiert und das 140-Byte-Budget überschreiten kann. Siehe SMS Kodierung und Segmentierung.

Wie versendet man diese Nachrichten mit BroadNet?

Erstellen Sie die Nachricht auf Ihrem Server und senden Sie sie über das OTP API oder das SMS API; Zeilenumbrüche sind Teil des Nachrichtentextes. Das OTP-Produkt von BroadNet nutzt bei nicht ankommenden Codes einen Fallback über SMS, WhatsApp, Voice und Flash Call, und MyOTP.App versendet Codes per SMS, WhatsApp oder Telegram von einem Konto aus. Lesen Sie für den gesamten Ablauf wie man einen OTP-Flow erstellt und unseren Leitfaden zur Multichannel-OTP-Verifizierung.

Häufig gestellte Fragen

Warum liest meine Android-App die OTP-SMS nicht?

Meistens stimmt der App-Hash in der Nachricht nicht mit dem Build überein (Debug- und Release-Keys unterscheiden sich), die Nachricht ist länger als 140 Bytes oder der Listener wurde erst gestartet, nachdem die Nachricht bereits eingetroffen war.

Benötige ich SMS-Berechtigungen, um Codes auf Android automatisch auszufüllen?

Nein. Sowohl der SMS Retriever API als auch der SMS User Consent API funktionieren ohne SMS-Leseberechtigung.

Wie aktiviere ich OTP Autofill auf iOS?

Setzen Sie textContentType in einer nativen App auf oneTimeCode oder fügen Sie autocomplete="one-time-code" zum Eingabefeld auf einer Webseite hinzu.

Wie lautet das WebOTP SMS-Format?

Zuerst menschenlesbarer Text, dann eine letzte Zeile mit @ gefolgt von Ihrer Domain, einem Leerzeichen, # und dem Code, zum Beispiel @www.example.com #482913.

Funktioniert WebOTP in Safari?

Safari unterstützt das WebOTP JavaScript API nicht, aber mit autocomplete="one-time-code" schlägt die Tastatur Codes aus Nachrichten im domänengebundenen Format vor.

Kann ich eine Vorlage für Android, iOS und Web verwenden?

Ja: der Code im Text, der App-Hash in einer eigenen Zeile und die domänengebundene Zeile am Ende – alles innerhalb von 140 Bytes.

Die Plattform-Regeln wurden am 28. September 2026 in der SMS Retriever- und SMS User Consent-Dokumentation von Google (developers.google.com) sowie in der WebOTP-Dokumentation von Chrome (developer.chrome.com) gelesen. Siehe unsere redaktionellen Standards.

War das hilfreich?

Wie wir Inhalte erstellen und prüfen

Verfasst von

BroadNet-Redaktionsteam

Das Redaktionsteam veröffentlicht den BroadNet-Blog. Die Artikel entstehen mit den BroadNet-Teams für regulatorische Angelegenheiten, Produkt, Engineering, Branchenforschung und Betreiberlösungen und werden nach unseren redaktionellen Standards geprüft.

Das Journal, per E-Mail

Ein Aufsatz pro Monat. Sonst nichts.

Abonnieren Sie unseren Newsletter und wir senden Ihnen den nächsten Beitrag – ob zu Technik, Regulierung oder Industrie – direkt am Erscheinungstag. Keine E-Mail-Kampagnen, keine Produktpräsentationen, keine Weitergabe an Dritte. Abmeldung mit einem Klick.

Wir senden eine E-Mail pro Monat. Abmeldung jederzeit möglich. Siehe unsere Datenschutzerklärung.

Was Sie erhalten
  • Ausführlicher Text, kein Linkköder
    Sechs bis elf Minuten konzentriertes Schreiben zu einem einzigen Thema.
  • Verfasst von Bedienern
    Ingenieure, Zulassungsbeauftragte und Produktentwickler sind im eigenen Haus tätig.
  • Regionsabhängig
    MENA-zentrierte Sicht auf Regulierungsbehörden, Betreiber und Vertriebskanalmix.
  • Einmal im Monat
    Keine tröpfchenweise Kampagne. Nur ein Essay, wenn es einen zu teilen gibt.
Hör auf zu lesen. Fang an zu versenden.

Das meiste von dem, was wir schreiben, haben wir in der Produktion gelernt.

Wenn Ihnen dieser Artikel zusagte, sollten wir uns unterhalten. Schildern Sie uns Ihren Anwendungsfall, die Volumina und die Märkte – wir melden uns dann mit Routing, Preisen und einem Referenzkunden, den Sie kontaktieren können.

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