App Link ist ein Android-Mechanismus (Android 6.0+), der Web-Links in der installierten App automatisch öffnet und den Auswahldialog überspringt. Der Begriff wurde von Google im Jahr 2015 zusammen mit Android 6.0 Marshmallow eingeführt. Laut Android Developers verwendet App Link Digital Asset Links — eine kryptografische Verifizierung über eine Datei auf dem Server, die bestätigt, dass die Domain dem App-Entwickler gehört.
Wichtige Punkte
App Link (Android App Link) ist ein standardmäßiger HTTPS-Link, der beim Klicken auf einem Android-Gerät automatisch die installierte App öffnet, ohne den standardmäßigen Auswahldialog zwischen Browser und App anzuzeigen. Google führte App Link in Android 6.0 (API 23) als Lösung für das „Chooser-Dialog“-Problem ein, das die Deep-Link-Konversion aufgrund des zusätzlichen Klicks und der Benutzerverwirrung reduzierte.
Die entscheidende Neuerung: Verifizierung. Android überprüft, ob die Domain tatsächlich dem App-Entwickler gehört, über die Digital Asset Links API. Google Play Store prüft App Link bei der Veröffentlichung und kann ein Update ablehnen, wenn die Verifizierung fehlschlägt. Dies macht App Link sicherer als Custom URL Scheme: Keine andere App kann einen Link zu Ihrer Domain abfangen.
Digital Asset Links ist ein offenes Protokoll, das Google nicht nur für App Link verwendet, sondern auch zur Verknüpfung von Websites mit Apps in Suchergebnissen, Google Assistant und Smart Lock for Passwords. Das Protokoll basiert auf kryptografischer Verifizierung: In assetlinks.json wird der SHA256-Fingerabdruck des Signaturzertifikats der App angegeben, was Fälschungen ausschließt.
Der Arbeitsprozess von App Link besteht aus drei Phasen: Verifizierung der Digital Asset Links, Verarbeitung durch Intent Filter und automatische Weiterleitung. Jede Phase ist obligatorisch. Wenn die Verifizierung fehlschlägt, zeigt Android einen Auswahldialog an — ein solcher Deep Link funktioniert normal, jedoch ohne den Vorteil der automatischen Überleitung.
Asset Links ist eine JSON-Datei, die auf dem Server unter https://domain/.well-known/assetlinks.json platziert wird. Die Datei enthält ein Array von Objekten mit Feldern: relation (ein Array von Zeichenfolgen, die den Beziehungstyp beschreiben), target (ein Objekt mit namespace und package_name der App sowie sha256_cert_fingerprints — ein Array von SHA256-Fingerabdrücken des Signaturzertifikats).
// assetlinks.json — minimale App Link-Konfiguration
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.example.app",
"sha256_cert_fingerprints": [
"14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:AD:A4:C5:AD:6B:01:14:79:6B:CB:12:6B:21:39:6F:EA"
]
}
}]
Der SHA256-Fingerabdruck wird aus dem Zertifikat gewonnen, mit dem die App signiert wurde. Für Debug-Builds wird das standardmäßige Android-Debug-Zertifikat verwendet, für Release-Builds das Zertifikat aus der Google Play Console oder Ihr eigenes. Wichtig: Beim Wechsel des Signaturzertifikats (z. B. bei der Umstellung auf App Signing by Google Play) muss assetlinks.json auf dem Server aktualisiert werden, sonst funktioniert App Link nicht mehr.
Android überprüft App Link beim ersten Klick auf einen Link. Das System lädt assetlinks.json vom Server herunter, vergleicht package_name und SHA256-Fingerabdruck mit dem Zertifikat der installierten App. Stimmen die Daten überein, markiert Android den Intent Filter als verifiziert, und alle nachfolgenden Links zu dieser Domain werden automatisch ohne Dialog geöffnet.
// AndroidManifest.xml — Intent Filter für App Link
<activity
android:name=".ui.ProductActivity"
android:exported="true">
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="example.com"
android:pathPrefix="/product" />
</intent-filter>
</activity>
autoVerify="true" ist ein obligatorisches Attribut, das Android anweist, assetlinks.json zu überprüfen. Ohne dieses Attribut wird der Intent Filter nicht verifiziert und App Link nicht aktiviert. Android unterstützt mehrere Intent Filter in einer Activity — für verschiedene Hosts. Das System überprüft jeden Host separat. Die Verifizierung erfolgt asynchron und kann beim ersten Klick bis zu 20 Sekunden dauern.
Nach erfolgreicher Verifizierung öffnet Android die App automatisch beim Klicken auf einen Link, der dem verifizierten Intent Filter entspricht. Der Benutzer sieht keinen Auswahldialog — die App öffnet sich sofort. Ist die App nicht installiert, wird der Link im Browser geöffnet (wie eine normale Webseite). Dies ist die ideale Benutzererfahrung: nahtlose Überleitung ohne unnötige Aktionen.
Wichtig: Die automatische Weiterleitung funktioniert nur für das https-Schema. App Link unterstützt kein http (unsicheres Protokoll). Öffnet ein Benutzer manuell einen http-Link (z. B. aus SMS), führt Android keine Verifizierung durch und zeigt einen Auswahldialog an. Es wird empfohlen, https für alle Links zu verwenden, die zur App führen, und auf dem Server eine HTTP-zu-HTTPS-Weiterleitung zu konfigurieren.
App Link ist die Evolution von Deep Link auf Android, kein Ersatz. Der Unterschied zwischen ihnen ist fundamental. Normaler Deep Link (Custom URL Scheme) funktioniert über einen Intent Filter mit einem benutzerdefinierten Schema (myapp://) und ohne autoVerify. Android überprüft nicht, ob die App tatsächlich mit diesem Schema verbunden ist — jede App kann myapp:// registrieren und Links abfangen.
App Link löst drei Probleme von Deep Link. Erstens: Sicherheit — die Verifizierung durch Digital Asset Links verhindert das Abfangen von Links. Zweitens: Benutzererfahrung — das Fehlen des Auswahldialogs erhöht die Konversion zur Zielaktion um 20–40%. Drittens: Indexierung — Google indexiert https App Link URLs und kann sie in Suchergebnissen als Links zu Inhalten innerhalb der App anzeigen.
Kompatibilität: App Link funktioniert auf Android 6.0+ (99% der Geräte). Für Android 5.x (Lollipop) wird normaler Deep Link mit Auswahldialog verwendet. Daher wird empfohlen, beide Mechanismen zu unterstützen: App Link für moderne Geräte und Custom URL Scheme als Fallback für ältere Versionen. Ein Intent Filter mit autoVerify="true" bricht die Abwärtskompatibilität nicht — auf Android < 6 wird das Attribut ignoriert.
| Eigenschaft | Deep Link | App Link |
|---|---|---|
| Schema | Benutzerdefiniert (myapp://) | HTTPS (https://domain) |
| Verifizierung | Keine | assetlinks.json |
| Auswahldialog | Wird angezeigt | Automatische Weiterleitung |
| Android-Version | API 1+ | API 23+ (6.0+) |
| Google-Indexierung | Nein | Ja (https URL) |
Die Einrichtung von App Link erfordert drei Schritte: Konfiguration des Intent Filter im Manifest, Platzieren von assetlinks.json auf dem Server und Überprüfung der Verifizierung. Der erste Schritt ist das Hinzufügen eines Intent Filter mit android:autoVerify="true" in AndroidManifest.xml. Es ist wichtig, das https-Schema, den Host und die Pfade anzugeben, die die App verarbeiten soll. Pfade können Platzhalter (*) für Unterordner enthalten.
Der zweite Schritt ist die Erstellung von assetlinks.json. Die Datei kann über Android Studio generiert werden (Tools → App Links Assistant). Der Assistent hilft auch beim Debugging und Testen. Die Datei wird auf dem Server unter /.well-known/assetlinks.json platziert. Der Server muss Content-Type: application/json zurückgeben und über HTTPS ohne Weiterleitungen erreichbar sein. Die Google Play Console zeigt ebenfalls den Verifizierungsstatus von App Link im Bereich Publishing an.
Testen — der dritte Schritt. Verwenden Sie adb zur Überprüfung: Der Befehl adb shell am start -W -a android.intent.action.VIEW -d „https://example.com/product/42“ öffnet die App. Wenn stattdessen der Browser geöffnet wird, überprüfen Sie assetlinks.json und autoVerify. Android Studio App Links Assistant enthält einen integrierten Tester: Er zeigt den Verifizierungsstatus für jede Domain und jeden Pfad an. Für automatisierte Tests verwenden Sie die Android Testing Library mit Intent Matcher.
Android 12 (API 31) führte Änderungen in der App Link-Verarbeitung ein. Eine neue domänenspezifische Verifizierung wurde hinzugefügt: Das System überprüft jeden Link einzeln, nicht den gesamten Intent Filter. Dies erhöht die Sicherheit, erfordert jedoch eine Aktualisierung der assetlinks.json-Datei beim Hinzufügen neuer Pfade. Android 12 führte auch den Android App Links Assistant im ADB-Paket ein — Befehle zur Verwaltung der Verifizierung über die Shell.
Mehrere Domains ist ein typisches Szenario für die Produktion. Eine App kann Links von example.com, m.example.com und example.org verarbeiten. Für jede Domain wird eine separate assetlinks.json auf dem entsprechenden Server benötigt. Im Manifest werden mehrere Intent Filter hinzugefügt — einer pro Domain. Alle Domains müssen über HTTPS erreichbar sein und die Verifizierung unabhängig bestehen.
App Link und Jetpack Navigation ist die empfohlene Methode zur Verarbeitung von App Link in modernen Android-Apps. Jetpack Navigation unterstützt deklarative Deep Links in nav_graph.xml oder über NavDeepLinkRequest. Dies vereinfacht die Navigation: Der Entwickler beschreibt, welcher Bildschirm für eine bestimmte URL geöffnet wird, und die Navigation-Komponente verarbeitet den Intent und stellt den Navigationsstapel selbstständig wieder her. Google empfiehlt die Verwendung von Jetpack Navigation für App Link.
// Verarbeitung von App Link über Jetpack Navigation
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
handleDeepLink(intent)
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
handleDeepLink(intent)
}
private fun handleDeepLink(intent: Intent) {
intent.data?.let { uri ->
navController.handleDeepLink(NavDeepLinkRequest
.Builder
.fromUri(uri)
.build()
)
}
}
}
Google Play Store überprüft App Link bei der Veröffentlichung. Enthält das Manifest einen Intent Filter mit autoVerify, ist aber assetlinks.json nicht verfügbar oder falsch, kann Google Play das Update mit einer Warnung ablehnen. In der Entwicklerkonsole (Policy and Programs → App Links) wird der Verifizierungsstatus jeder Domain angezeigt. Überprüfen Sie vor der Veröffentlichung immer den Status — eine Korrektur nach der Update-Ablehnung verzögert die Veröffentlichung.
Häufig gestellte Fragen
App Link ist ein Deep Link mit Verifizierung über Digital Asset Links. Hauptunterschiede: App Link verwendet ein https-Schema anstelle eines benutzerdefinierten, zeigt keinen Auswahldialog und wird von Google indexiert. Ein normaler Deep Link funktioniert auf allen Android-Versionen, erfordert jedoch eine manuelle App-Auswahl.
Die Datei wird im Stammverzeichnis des HTTPS-Servers unter /.well-known/assetlinks.json platziert. Der Server muss Content-Type: application/json zurückgeben. Die Datei sollte beim Wechsel des Signaturzertifikats oder beim Hinzufügen neuer Domains aktualisiert werden.
Hauptgründe: Fehlendes android:autoVerify="true" im Intent Filter, assetlinks.json nicht über HTTPS verfügbar, falscher SHA256-Fingerabdruck, anderes Signaturzertifikat (Debug vs. Release). Überprüfen Sie den Verifizierungsstatus über adb shell dumpsync domain_verification.
Nein — App Link erfordert einen HTTPS-Server mit zugänglicher assetlinks.json. Wenn Sie keine Domain haben, verwenden Sie Firebase Hosting oder GitHub Pages zum Hosten der Datei. Alternative: Custom URL Scheme (ohne Verifizierung) oder Firebase Dynamic Links.
Nein — App Link wird auf Android 6.0 (API 23) und höher unterstützt. Auf Android 5 ignoriert Intent Filter mit android:autoVerify="true" das Attribut und funktioniert wie ein normaler Deep Link mit Auswahldialog. Es wird empfohlen, beide Mechanismen für Abwärtskompatibilität zu unterstützen.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch