---
title: "OTP-Autofill per SMS: Formate für Android, iOS und Web"
description: "So funktioniert OTP-Autofill auf Android, iOS und im Web: SMS-Retriever-Hash, domaingebundene Codes, WebOTP, ein Format für alle drei und WhatsApp-Autofill."
canonical: "https://omnichannels.ai/de/blog/otp-autofill-android-ios-web/"
language: "de"
updated: "2026-11-08"
publisher: "BroadNet Technologies"
brand: "OmniChannels.ai"
category: "integration"
primaryQuery: "otp autofill sms android ios"
keywords: ["SMS Retriever API Format", "Android SMS User Consent API", "iOS Sicherheitscode automatisch ausfüllen", "domaingebundener SMS-Code", "WebOTP API", "autocomplete one-time-code", "WhatsApp One-Tap Autofill", "OTP SMS App-Hash"]
published: "2026-11-08"
author: "OmniChannels.ai Editorial Team"
reviewer: "BroadNet Messaging Solutions Team"
readingMinutes: 9
answer: "OTP-Autofill besteht aus drei getrennten Mechanismen. Android-Apps nutzen die SMS Retriever API, die einen 11-stelligen App-Hash in einer Nachricht von höchstens 140 Byte braucht, oder die SMS User Consent API ohne Hash. iOS schlägt Codes aus der SMS selbst vor; domaingebundene Codes enden mit einer Zeile wie @example.com #123456. Websites verwenden autocomplete=\"one-time-code\" und die WebOTP API, die dieselbe letzte Zeile auslesen."
takeaways: ["Android kennt zwei APIs: SMS Retriever (Nachricht mit höchstens 140 Byte, einem Einmalcode und einem 11-stelligen App-Hash) und SMS User Consent (der Nutzer genehmigt die Weitergabe einer Nachricht).", "Setzen Sie unter iOS für das Feld den Inhaltstyp one-time-code; domaingebundene Codes enden mit einer letzten Zeile aus @Domain, einem Leerzeichen und #Code und werden ab iOS 14 unterstützt.", "Im Web fügen Sie dem Eingabefeld autocomplete=\"one-time-code\" hinzu und rufen für Chrome auf Android navigator.credentials.get mit dem Transport sms auf; Safari nutzt das Attribut.", "Eine Nachricht kann alle drei bedienen, wenn der App-Hash über einer Schlusszeile @Domain #Code steht, testen Sie sie aber auf echten Geräten und bei den tatsächlich genutzten Netzbetreibern.", "WhatsApp-Authentifizierungsvorlagen bieten Code-kopieren-, One-Tap- und Zero-Tap-Schaltflächen; Zero-Tap gibt es nur auf Android."]
faq: 
  - q: "Welches Nachrichtenformat verlangt die SMS Retriever API?"
    a: "Laut Googles Dokumentation darf die Nachricht höchstens 140 Byte lang sein, muss einen Einmalcode enthalten, den Ihre App an Ihren Server zurücksendet, und einen 11-stelligen Hash, der Ihre App identifiziert. Alles Weitere bleibt Ihnen überlassen. Über den Hash leiten die Google Play-Dienste die Nachricht ohne zusätzliche Berechtigungen an die richtige App weiter."
  - q: "Brauche ich für die SMS User Consent API einen App-Hash?"
    a: "Googles Übersicht zur SMS User Consent API beschreibt keinen App-Hash. Stattdessen sieht der Nutzer eine Abfrage und entscheidet, ob er die Nachricht mit Ihrer App teilt. Ihre App muss das Lauschen starten, bevor die SMS eintrifft, und liest den Code anschließend selbst aus dem Nachrichtentext."
  - q: "Was ist ein domaingebundener SMS-Code unter iOS?"
    a: "Es ist eine SMS, deren letzte Zeile den Code an Ihre Domain bindet: die Domain mit vorangestelltem @, ein Leerzeichen und der Code mit vorangestelltem #. Apple dokumentiert dies ab iOS 14. AutoFill schlägt den Code nur vor, wenn die Website in Safari oder eine zugeordnete Domain der App mit der Domain in der Nachricht übereinstimmt."
  - q: "Wie liest WebOTP die SMS aus?"
    a: "Die Seite ruft navigator.credentials.get mit der Option otp und dem Transport sms auf. Trifft eine Nachricht ein, deren letzte Zeile @host #code lautet und deren Host zum Ursprung der Seite passt, bittet der Browser den Nutzer um Bestätigung und liefert den Code. Nötig ist HTTPS; dokumentiert ist Chrome auf Android."
  - q: "Warum wird mein OTP nicht automatisch ausgefüllt?"
    a: "Häufige Ursachen sind ein nicht eindeutig erkennbarer Code, ein falscher oder fehlender App-Hash unter Android, eine letzte Zeile, die nicht dem Format @domain #code folgt, eine Domain, die nicht zur Seite passt, oder Text, der die Nachricht über das Byte-Limit hebt. Prüfen Sie jeden Punkt anhand der Formatregeln und testen Sie dann mit einem echten Gerät."
  - q: "Unterstützt WhatsApp OTP-Autofill?"
    a: "Ja. Metas Authentifizierungsvorlagen unterstützen eine Schaltfläche zum Kopieren des Codes, eine One-Tap-Autofill-Schaltfläche und eine Zero-Tap-Option. One-Tap und Zero-Tap benötigen den Android-Paketnamen und den Signatur-Hash Ihrer App. Zero-Tap wird nur auf Android unterstützt; Nutzer anderer Plattformen erhalten stattdessen eine Schaltfläche zum Kopieren des Codes."
sources: 
  - title: "SMS Retriever API: perform SMS verification — Google for Developers"
    url: "https://developers.google.com/identity/sms-retriever/verify"
  - title: "SMS User Consent API: request a one-time code — Google for Developers"
    url: "https://developers.google.com/identity/sms-retriever/user-consent/request"
  - title: "Enabling AutoFill for domain-bound SMS codes — Apple Developer"
    url: "https://developer.apple.com/documentation/security/enabling-autofill-for-domain-bound-sms-codes"
  - title: "Verify phone numbers on the web with the WebOTP API — Chrome for Developers"
    url: "https://developer.chrome.com/docs/identity/web-apis/web-otp"
  - title: "WebOTP API — WICG specification"
    url: "https://wicg.github.io/web-otp/"
  - title: "Authentication templates — WhatsApp Business Platform, Meta for Developers"
    url: "https://developers.facebook.com/docs/whatsapp/business-management-api/authentication-templates"
---

# OTP-Autofill per SMS: Formate für Android, iOS und Web

Canonical: https://omnichannels.ai/de/blog/otp-autofill-android-ios-web/
Language: de
Publisher: OmniChannels.ai by BroadNet Technologies

Dieser Leitfaden richtet sich an Entwickler und Produktverantwortliche, die möchten, dass sich ein Bestätigungscode auf Android, iPhone und im Web von selbst einträgt. Er erklärt, was jede Plattform von der SMS verlangt, wie Sie eine Nachricht schreiben, die alle drei bedient, wie WhatsApp-Authentifizierungsvorlagen mit Autofill umgehen und woran es meistens scheitert.

## Wie funktioniert OTP-Autofill auf den einzelnen Plattformen?

Jede Plattform liest die SMS anders aus, deshalb gibt es keinen einzelnen Schalter. Android braucht entweder einen App-Hash oder die Zustimmung des Nutzers, iOS erkennt Codes selbst, und Browser lesen eine formatierte letzte Zeile.

| Plattform | Mechanismus | Was die SMS braucht | Aktion des Nutzers |
|---|---|---|---|
| Android-App | SMS Retriever API | Höchstens 140 Byte, ein Einmalcode und ein 11-stelliger App-Hash | Keine |
| Android-App | SMS User Consent API | Eine Nachricht mit einem Einmalcode | Genehmigt die Weitergabe einer Nachricht |
| iOS- und iPadOS-App | Automatisches Ausfüllen von Sicherheitscodes | Ein Code, den iOS erkennen kann; domaingebundenes Format empfohlen | Tippt auf den Vorschlag |
| Web (Safari) | `autocomplete="one-time-code"` | Domaingebundene letzte Zeile | Tippt auf den Vorschlag |
| Web (Chrome auf Android) | WebOTP API | Letzte Zeile `@host #code` | Bestätigt die Abfrage |

Alle Verfahren helfen nur, wenn Ihre SMS ankommt. Falls nicht, lesen Sie [OTP nicht erhalten](/de/blog/otp-not-received-troubleshooting/).

## Wie funktioniert die Android SMS Retriever API?

Ihre App bittet die Google Play-Dienste, auf eine einzelne Nachricht zu lauschen, und die Nachricht trägt einen Hash, der Ihre App identifiziert. Eine zusätzliche App-Berechtigung ist nicht nötig.

Googles Dokumentation nennt drei Anforderungen an die Bestätigungsnachricht. Sie muss:

1. höchstens 140 Byte lang sein;
2. einen Einmalcode enthalten, den Ihre App an Ihren Server zurücksendet, um die Verifizierung abzuschließen;
3. einen 11-stelligen Hash-String enthalten, der Ihre App identifiziert.

Alles andere in der Nachricht liegt bei Ihnen. Der Ablauf: Die App startet die API, während sie die SMS anfordert, Ihr Server sendet die Nachricht, die Play-Dienste leiten sie an Ihre App weiter, und die App extrahiert den Code und gibt ihn zur Validierung an Ihren Server zurück. Ihr Server sollte außerdem prüfen, ob der Code gültig und noch nicht abgelaufen ist.

### Wie komme ich an den 11-stelligen Hash?

Laut Google besteht der Hash aus den ersten 11 Zeichen eines Base64-kodierten Hashes. Er wird aus dem Signaturzertifikat Ihrer App berechnet, nach den keytool-Schritten in Googles Dokumentation. Verwaltet Google Play Ihre App-Signatur, importieren Sie dieses Zertifikat für die Berechnung. Signieren Sie direkt, verwenden Sie Ihren Produktions-Keystore und den Zertifikatsalias.

Da der Hash vom Signaturzertifikat abhängt, hat ein mit einem anderen Schlüssel signierter Build einen anderen Hash. Berücksichtigen Sie das, wenn Sie Debug-Builds gegen Produktionsnachrichten testen, und prüfen Sie den Hash für jede Signatur-Konfiguration, die Sie ausliefern.

### Was, wenn ich keinen Hash verwalten möchte?

Nutzen Sie die SMS User Consent API. Laut Googles Dokumentation wird der Nutzer gefragt, bevor eine Nachricht weitergegeben wird; danach steht Ihrer App die gesamte Nachricht zur Verfügung, und sie liest den Code selbst aus. Nach Googles Seite muss die Nachricht eine alphanumerische Zeichenfolge von 4 bis 10 Zeichen mit mindestens einer Ziffer enthalten, der Listener läuft fünf Minuten, und Sie können optional auf einen Absender einschränken. Starten Sie die API, bevor die SMS eintrifft: Früher empfangene Nachrichten werden nicht weitergeleitet.

## Wie füllen iOS und iPadOS einen Code automatisch aus?

iOS erkennt eine SMS mit einem Einmalcode und bietet ihn in Feldern an, die sich als Codefelder ausweisen. Apple dokumentiert zwei Schritte für Sie.

1. Setzen Sie den Inhaltstyp des Felds. In UIKit setzen Sie `textContentType` auf `.oneTimeCode`. In SwiftUI verwenden Sie den Modifier `textContentType` mit demselben Wert. Für eine Website setzen Sie `autocomplete="one-time-code"` am Eingabefeld.
2. Optional binden Sie den Code an Ihre Domain. Ab iOS 14 und macOS Big Sur können Sie die SMS so formatieren, dass AutoFill den Code nur vorschlägt, wenn die Safari-Website oder die zugeordnete Domain der App übereinstimmt. So lässt sich schwerer jemand dazu verleiten, einen Code auf einer Phishing-Seite einzugeben.

Das Format laut Apple: beliebiger Text zuerst, dann eine letzte Zeile mit Ihrer Domain mit vorangestelltem `@`, einem Leerzeichen und dem Code mit vorangestelltem `#`.

```text
Your Example code is 123456.

@example.com #123456
```

Bei einer App tragen Sie die gebundene Domain in die zugeordneten Domains der App ein, sonst schlägt AutoFill den Code nicht vor. Standardcodes ohne Bindung werden weiterhin erkannt, Apple empfiehlt aber das domaingebundene Format.

## Wie funktioniert OTP-Autofill im Web?

Fügen Sie zuerst das Attribut hinzu, dann das JavaScript für Browser, die es unterstützen.

```html
<input type="text" inputmode="numeric"
       autocomplete="one-time-code" name="otp" />
```

Chromes Dokumentation empfiehlt das Attribut für die Kompatibilität zwischen Browsern und sagt, dass Safari damit den Code aus einer korrekt formatierten SMS vorschlägt, obwohl die JavaScript-API WebOTP fehlt.

Für Chrome auf Android rufen Sie WebOTP mit dem Transport `sms` auf. Die API verlangt einen sicheren Ursprung (HTTPS), und mit einem `AbortController` brechen Sie die ausstehende Anfrage ab, wenn der Nutzer den Code von Hand eintippt.

```js
if ("OTPCredential" in window) {
  const ac = new AbortController();
  const form = document.querySelector("form");
  const input = document.querySelector("input[autocomplete=one-time-code]");

  form.addEventListener("submit", () => ac.abort());

  navigator.credentials
    .get({ otp: { transport: ["sms"] }, signal: ac.signal })
    .then((otp) => {
      input.value = otp.code;
      form.submit();
    })
    .catch(() => {}); // user dismissed, or no matching SMS
}
```

Die SMS muss dem ursprungsgebundenen Format aus der WICG-Spezifikation und Chromes Leitfaden folgen: ein Code aus vier bis zehn alphanumerischen Zeichen mit mindestens einer Ziffer vor der letzten Zeile, dann eine letzte Zeile, die mit `@` beginnt, gefolgt vom Host, einem einzelnen Leerzeichen und `#` plus Code. Der Host darf kein Leerzeichen enthalten.

## Kann eine SMS auf Android, iOS und im Web funktionieren?

Oft ja, denn die Regeln sind miteinander vereinbar. Setzen Sie den lesbaren Text zuerst, den Android-Hash in eine Zeile oberhalb des Endes und die domaingebundene Zeile ganz ans Ende. Dieses Layout folgt den dokumentierten Regeln und ist keine Herstellergarantie, testen Sie es also.

```text
Your Example code is 483921. Do not share it.
Ab3dE+9xYz1
@example.com #483921
```

Warum diese Reihenfolge: Apple und die Web-Spezifikation wollen Domain und Code in der letzten Zeile. Google verlangt den 11-stelligen Hash irgendwo in der Nachricht, legt seine Position auf der von uns geprüften Seite aber nicht fest. Das Beispiel oben hat in einfachen lateinischen Zeichen 78 Byte und liegt damit deutlich unter dem Limit von 140 Byte.

Checkliste vor dem Livegang:

1. Der Code ist ein einzelnes Token, klar von anderen Ziffern im Text getrennt.
2. Die Domain in der letzten Zeile passt zur Website und zur zugeordneten Domain der App.
3. Die Gesamtlänge liegt bei der Retriever-Variante innerhalb von 140 Byte.
4. Der Hash passt zum Signaturschlüssel des getesteten Builds.
5. Getestet auf einem Gerät jeder Plattform, bei den Netzbetreibern, über die Sie tatsächlich senden.

## Und bei arabischem und Unicode-Text?

Halten Sie den Code und die beiden maschinenlesbaren Teile schlicht. Googles Limit gilt in Byte, und in eine Unicode-SMS passen deutlich weniger Zeichen als in eine GSM-7-SMS: 70 gegenüber 160 in einem einzelnen Segment (siehe [SMS-Zeichenlimits und Unicode](/de/blog/sms-character-limits-unicode-arabic/)). Ein arabischer Satz verbraucht das Budget daher schnell, und ein einziges Nicht-GSM-Zeichen schaltet die ganze Nachricht auf Unicode um.

Sicherer Ansatz: den Code in lateinischen Ziffern lassen, `@domain #code` in ASCII halten und den arabischen Text kurz fassen. Eine offizielle Dokumentation zum Autofill von Codes in anderen Ziffernsystemen haben wir nicht gefunden, deshalb lassen wir das aus und empfehlen, vor dem Einsatz zu testen.

## Wie gehen WhatsApp-Authentifizierungsvorlagen mit Autofill um?

Metas Authentifizierungsvorlagen gibt es mit drei Schaltflächenarten, jeweils mit festem Nachrichtentext der Form `<code> is your verification code.`

| Schaltfläche | Funktion | Hinweise |
|---|---|---|
| Code kopieren | Der Nutzer tippt zum Kopieren des Codes und fügt ihn in Ihre App ein | Funktioniert ohne App-Änderungen |
| One-Tap-Autofill | Unter Android öffnet eine Schaltfläche Ihre App und übergibt den Code | Braucht `package_name` und `signature_hash` in `supported_apps` |
| Zero-Tap | Keine Schaltfläche; der WhatsApp-Client sendet den Code per Broadcast an Ihre App | Nur Android; Sie müssen Metas Zero-Tap-Bedingungen akzeptieren |

Metas Dokumentation weist außerdem darauf hin, dass unter iOS 26 und neuer Tastaturvorschläge Autofill ohne Integration bieten und dass Nutzer auf Plattformen ohne Zero-Tap eine Schaltfläche zum Kopieren des Codes erhalten. Mit `code_expiration_minutes` legen Sie eine Gültigkeitsdauer fest; die Vorschau-API akzeptiert Werte von 1 bis 90 Minuten. Die Kanäle vergleichen Sie in [WhatsApp-OTP vs. SMS-OTP](/de/blog/whatsapp-otp-vs-sms-otp/).

## Praxisbeispiel: Login einer Ride-Hailing-App

„Qafila Rides“ (fiktiv) hat eine Android-App, eine iOS-App und eine mobile Website unter `qafila.example`.

1. Die Android-App startet den SMS Retriever, wenn der Nutzer auf „Code senden“ tippt.
2. Das Backend erzeugt einen sechsstelligen Code, der einige Minuten gültig ist, und sendet die dreizeilige Nachricht von oben über die SMS-API.
3. Android übergibt die Nachricht an die App. iOS bietet den Code über der Tastatur an. Auf der mobilen Website schlägt Safari ihn vor, und Chrome füllt ihn über WebOTP aus.
4. Der Server validiert den Code genau einmal, lehnt Wiederverwendung und abgelaufene Codes ab und begrenzt die Anfragen.
5. Wird die SMS nicht innerhalb einer kurzen Zeitspanne bestätigt, bietet das Backend eine WhatsApp-Authentifizierungsvorlage als zweiten Weg an.

## Was sind die häufigsten Fehler?

- **Code nicht für sich allein.** Weitere Zahlen (Telefonnummer, Preis, Datum) neben dem Code stören die Erkennung. Verwenden Sie pro Nachricht einen Code.
- **Falscher Hash.** Der Hash folgt dem Signaturzertifikat. Ein Hash aus einem Debug-Schlüssel passt nicht zu einem Produktions-Build.
- **Domain passt nicht.** `@example.com` muss zur Website oder zugeordneten Domain passen, sonst bieten iOS und WebOTP den Code nicht an.
- **Beschädigte letzte Zeile.** Alles nach `#code`, ein fehlendes Leerzeichen oder Leerraum in der Domain zerstört das Format.
- **Nachricht zu lang oder zu Unicode-lastig,** wodurch das Retriever-Limit von 140 Byte überschritten wird.
- **Zu spätes Lauschen.** Die User Consent API ignoriert Nachrichten, die vor ihrem Start eingegangen sind.
- **Autofill als Sicherheitsmaßnahme.** Autofill ist Komfort. Validieren Sie weiterhin serverseitig, lassen Sie Codes ablaufen, begrenzen Sie Versuche und achten Sie auf [SMS-Pumping-Betrug](/de/blog/sms-pumping-fraud-prevention/).
- **Geltungsbereich.** Dieser Leitfaden behandelt das dokumentierte Verhalten zum Zeitpunkt der Erstellung. Plattformregeln ändern sich, prüfen Sie daher vor dem Release die verlinkten Quellen.

Zu Formulierung und Gültigkeitsdauer der Nachricht lesen Sie unseren [Leitfaden zu OTP- und Authentifizierungsnachrichten](/de/blog/otp-authentication-messages-guide/).

## So unterstützt Sie OmniChannels.ai

OmniChannels.ai sendet OTP per SMS und WhatsApp über die direkte Netzbetreiberanbindung von BroadNet, sodass Sie den genauen Nachrichtentext steuern, von dem Ihr Autofill-Format abhängt. WhatsApp-Vorlagen decken Authentifizierung mit Code kopieren, One-Tap und Zero-Tap ab. Der Kanal-Fallback, zum Beispiel erst WhatsApp, dann SMS, wird pro Anwendungsfall konfiguriert, und Zustellstatus kommen in einem einheitlichen Webhook-Format an. Siehe die [SMS-API-Dokumentation](/developers/sms/), die [WhatsApp-API-Dokumentation](/developers/whatsapp/) und die [OTP-Lösung](/de/solutions/otp-notifications/).
