App Link: wat is het, werkingsprincipe en instelling

Auteur: IT Sectr Gepubliceerd: 2026-05-14 Leestijd: 9 min

App Link is een Android-mechanisme (Android 6.0+) dat weblinks automatisch opent in de geïnstalleerde app, zonder het selectiedialoogvenster. De term werd geïntroduceerd door Google in 2015 samen met Android 6.0 Marshmallow. Volgens Android Developers gebruikt App Link Digital Asset Links — cryptografische verificatie via een bestand op de server, die bevestigt dat het domein aan de app-ontwikkelaar toebehoort.

Belangrijkste punten

  • App Link — HTTPS-link die de app automatisch opent zonder selectiedialoog
  • Digital Asset Links — JSON-bestand assetlinks.json op de server dat de koppeling tussen domein en app verifieert
  • SHA256-vingerafdruk van het certificaat — het belangrijkste verificatie-element dat de ontwikkelaar aan het domein koppelt
  • Intent Filter — Android-component die declareert welke links de app verwerkt
  • Veiligheid — App Link elimineert het dialoogvenster „Openen in app of browser”, waardoor de conversie toeneemt

App Link (Android App Link) — is een standaard HTTPS-link die bij het klikken op een Android-apparaat automatisch de geïnstalleerde app opent zonder het standaard selectiedialoogvenster tussen browser en app weer te geven. Google introduceerde App Link in Android 6.0 (API 23) als oplossing voor het probleem van het „selectiedialoogvenster” dat de conversie van deep links verminderde vanwege een extra klik en verwarring bij de gebruiker.

De belangrijkste innovatie: verificatie. Android controleert of het domein echt aan de app-ontwikkelaar toebehoort via de Digital Asset Links API. Google Play Store controleert App Link bij publicatie en kan de update afwijzen als de verificatie mislukt. Dit maakt App Link veiliger dan Custom URL Scheme: geen enkele andere app kan een link naar uw domein onderscheppen.

Digital Asset Links — is een open protocol dat Google niet alleen voor App Link gebruikt, maar ook voor het koppelen van websites aan apps in zoekresultaten, Google Assistant en Smart Lock for Passwords. Het protocol is gebaseerd op cryptografische verificatie: in assetlinks.json wordt de SHA256-vingerafdruk van het ondertekeningscertificaat van de app vermeld, wat vervalsing uitsluit.

Het werkingsproces van App Link bestaat uit drie fasen: verificatie van Digital Asset Links, verwerking via Intent Filter en automatische omleiding. Elke fase is verplicht. Als de verificatie mislukt, toont Android het selectiedialoogvenster — zo'n deep link werkt als een gewone, maar zonder het voordeel van automatische omleiding.

Digital Asset Links (assetlinks.json)

Asset Links — JSON-bestand dat op de server wordt geplaatst op https://domein/.well-known/assetlinks.json. Het bestand bevat een array van objecten met de velden: relation (een array van strings die het type relatie beschrijven), target (een object met namespace en package_name van de app, evenals sha256_cert_fingerprints — een array van SHA256-vingerafdrukken van het ondertekeningscertificaat).

json
// assetlinks.json — minimale configuratie van App Link
[{
    "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"
        ]
    }
}]

SHA256-vingerafdruk wordt verkregen uit het certificaat waarmee de app is ondertekend. Voor debug-builds wordt het standaard Android-debugcertificaat gebruikt, voor release — het certificaat van Google Play Console of uw eigen certificaat. Belangrijk: bij het wijzigen van het ondertekeningscertificaat (bijv. bij overstap naar App Signing by Google Play) moet assetlinks.json op de server worden bijgewerkt, anders werkt App Link niet meer.

Intent Filter en verificatie

Android controleert App Link bij de eerste klik op een link. Het systeem laadt assetlinks.json van de server, vergelijkt package_name en SHA256-vingerafdruk met het certificaat van de geïnstalleerde app. Als de gegevens overeenkomen, markeert Android de Intent Filter als geverifieerd en worden alle volgende links naar dit domein automatisch geopend, zonder dialoog.

xml
// AndroidManifest.xml — Intent Filter voor 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" — het verplichte attribuut dat Android opdraagt assetlinks.json te controleren. Zonder dit attribuut wordt de Intent Filter niet geverifieerd en wordt App Link niet geactiveerd. Android ondersteunt meerdere Intent Filters in één Activity — voor verschillende hosts. Het systeem controleert elke host afzonderlijk. De verificatie wordt asynchroon uitgevoerd en kan bij de eerste overgang tot 20 seconden duren.

Automatische omleiding (Automatic Redirect)

Na succesvolle verificatie opent Android automatisch de app bij het klikken op elke link die overeenkomt met de geverifieerde Intent Filter. De gebruiker ziet geen selectiedialoog — de app wordt onmiddellijk geopend. Als de app niet is geïnstalleerd, wordt de link in de browser geopend (als een gewone webpagina). Dit is de ideale gebruikerservaring: naadloze overgang zonder overbodige handelingen.

Belangrijk: automatische omleiding werkt alleen voor het HTTPS-schema. App Link ondersteunt HTTP (onbeveiligd protocol) niet. Als de gebruiker handmatig een HTTP-link opent (bijv. uit SMS), voert Android geen verificatie uit en toont het selectiedialoogvenster. Het wordt aanbevolen HTTPS te gebruiken voor alle links die naar de app leiden en een HTTP → HTTPS-omleiding op de server in te stellen.

App Link is de evolutie van Deep Link op Android, geen vervanging. Het verschil tussen beide is fundamenteel. Gewone Deep Link (Custom URL Scheme) werkt via Intent Filter met een aangepast schema (myapp://) en zonder autoVerify. Android controleert niet of de app werkelijk aan dit schema is gekoppeld — elke app kan myapp:// registreren en links onderscheppen.

App Link lost drie problemen van Deep Link op. Ten eerste: veiligheid — verificatie via Digital Asset Links sluit het onderscheppen van links uit. Ten tweede: gebruikerservaring — het ontbreken van een selectiedialoog verhoogt de conversie naar de doelactie met 20–40%. Ten derde: indexering — Google indexeert HTTPS-links van App Link en kan deze in zoekresultaten weergeven als links naar inhoud in de app.

Compatibiliteit: App Link werkt op Android 6.0+ (99% van de apparaten). Voor Android 5.x (Lollipop) wordt gewone Deep Link met selectiedialoog gebruikt. Daarom wordt aanbevolen beide mechanismen te ondersteunen: App Link voor moderne apparaten en Custom URL Scheme als fallback voor oudere versies. Intent Filter met autoVerify="true" breekt de achterwaartse compatibiliteit niet — op Android < 6 wordt het attribuut genegeerd.

KenmerkDeep LinkApp Link
SchemaAangepast (myapp://)HTTPS (https://domein)
VerificatieNeeassetlinks.json
SelectiedialoogWordt getoondAutomatische omleiding
Android-versieAPI 1+API 23+ (6.0+)
Google-indexeringNeeJa (HTTPS-URL)

Het instellen van App Link vereist drie stappen: configuratie van de Intent Filter in het manifest, plaatsing van assetlinks.json op de server en controle van de verificatie. Eerste stap — voeg een Intent Filter met android:autoVerify="true" toe in AndroidManifest.xml. Het is belangrijk om het HTTPS-schema, de host en de paden die de app moet verwerken op te geven. Paden kunnen een wildcard (*) bevatten voor submappen.

Tweede stap — het maken van assetlinks.json. Het bestand kan worden gegenereerd via Android Studio (Tools → App Links Assistant). De assistent helpt ook bij het debuggen en testen. Het bestand wordt op de server geplaatst op het pad /.well-known/assetlinks.json. De server moet Content-Type: application/json retourneren en toegankelijk zijn via HTTPS zonder omleidingen. Google Play Console toont ook de verificatiestatus van App Link in het gedeelte Publishing.

  1. Voeg Intent Filter met android:autoVerify="true" toe in AndroidManifest.xml
  2. Verkrijg de SHA256-vingerafdruk van het certificaat (keytool of App Links Assistant)
  3. Maak assetlinks.json met package_name en sha256_cert_fingerprints
  4. Plaats het bestand op het pad /.well-known/assetlinks.json op de HTTPS-server
  5. Controleer de verificatie via adb: adb shell dumpsync domain_verification

Testen — derde stap. Gebruik adb voor controle: het commando adb shell am start -W -a android.intent.action.VIEW -d "https://example.com/product/42" opent de app. Als in plaats van de app de browser wordt geopend — controleer dan assetlinks.json en autoVerify. Android Studio App Links Assistant bevat een ingebouwde tester: het toont de verificatiestatus voor elk domein en pad. Gebruik voor automatisch testen de Android Testing Library met Intent Matcher.

Kenmerken

Android 12 (API 31) bracht wijzigingen in de verwerking van App Link. Er is een nieuwe domeinspecifieke verificatie toegevoegd: het systeem controleert elke link afzonderlijk, niet de hele Intent Filter. Dit verhoogt de veiligheid, maar vereist het bijwerken van het bestand assetlinks.json bij het toevoegen van nieuwe paden. Android 12 introduceerde ook Android App Links Assistant samen met ADB — opdrachten voor het beheren van verificatie via de shell.

Meerdere domeinen — een typisch productiescenario. De app kan links verwerken van example.com, m.example.com en example.org. Voor elk domein is een aparte assetlinks.json op de betreffende server nodig. In het manifest worden meerdere Intent Filters toegevoegd — één per domein. Alle domeinen moeten toegankelijk zijn via HTTPS en onafhankelijk worden geverifieerd.

App Link en Jetpack Navigation — de aanbevolen manier om App Link te verwerken in moderne Android-apps. Jetpack Navigation ondersteunt declaratieve deep links in nav_graph.xml of via NavDeepLinkRequest. Dit vereenvoudigt de navigatie: de ontwikkelaar beschrijft welk scherm onder een bepaalde URL wordt geopend, en de Navigation-component verwerkt zelf de Intent en herstelt de navigatiestack. Google raadt aan om Jetpack Navigation te gebruiken voor App Link.

kotlin
// Verwerking van App Link via 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 controleert App Link bij publicatie. Als in het manifest een Intent Filter met autoVerify is opgegeven, maar assetlinks.json niet toegankelijk of onjuist is, kan Google Play de update met een waarschuwing afwijzen. In de ontwikkelaarsconsole (Policy and Programs → App Links) wordt de verificatiestatus van elk domein weergegeven. Controleer vóór publicatie altijd de status — herstel na afwijzing van de update vertraagt de release.

Veelgestelde vragen

Hoe verschilt App Link van Deep Link op Android?

App Link — is een Deep Link met verificatie via Digital Asset Links. Belangrijkste verschillen: App Link gebruikt het HTTPS-schema in plaats van een aangepast schema, toont geen selectiedialoog en wordt geïndexeerd door Google. Gewone Deep Link werkt op alle Android-versies, maar vereist handmatige selectie van de app.

Waar moet assetlinks.json worden geplaatst?

Het bestand wordt in de hoofdmap van de HTTPS-server geplaatst op het pad /.well-known/assetlinks.json. De server moet Content-Type: application/json retourneren. Het bestand moet worden bijgewerkt bij het wijzigen van het ondertekeningscertificaat of het toevoegen van nieuwe domeinen.

Waarom opent App Link de app niet automatisch?

Belangrijkste oorzaken: ontbrekende android:autoVerify="true" in Intent Filter, assetlinks.json niet toegankelijk via HTTPS, onjuiste SHA256-vingerafdruk, ander ondertekeningscertificaat (debug vs release). Controleer de verificatiestatus via adb shell dumpsync domain_verification.

Kan App Link worden gebruikt zonder eigen domein?

Nee — App Link vereist een HTTPS-server met toegankelijke assetlinks.json. Als u geen domein heeft, gebruik dan Firebase Hosting of GitHub Pages om het bestand te hosten. Alternatief: Custom URL Scheme (zonder verificatie) of Firebase Dynamic Links.

Werkt App Link op Android 5?

Nee — App Link wordt ondersteund op Android 6.0 (API 23) en hoger. Op Android 5 negeert de Intent Filter met android:autoVerify="true" het attribuut en werkt als een gewone Deep Link met selectiedialoog. Het wordt aanbevolen beide mechanismen te ondersteunen voor achterwaartse compatibiliteit.

Samenvatting

  • App Link — evolutie van Deep Link voor Android: HTTPS-link met automatische overgang naar de app
  • Digital Asset Links — cryptografische verificatie via assetlinks.json op de server
  • SHA256-vingerafdruk van het ondertekeningscertificaat — het belangrijkste element dat de ontwikkelaar aan het domein koppelt
  • android:autoVerify="true" — het verplichte attribuut van Intent Filter voor het activeren van App Link
  • Veiligheid — App Link sluit het onderscheppen van links door derden uit
  • Google Play Store controleert de App Link-verificatie bij publicatie en wijst bij fouten af
  • Jetpack Navigation — aanbevolen manier om App Link te verwerken met declaratieve deep links

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook