"Deeplink" is de algemene term voor elke link die een specifiek scherm in een app opent. Universal Links (iOS) en Android App Links zijn de geverifieerde https://-manier om deeplinks te bouwen, custom URL schemes zijn de oudere, niet-geverifieerde manier, en deferred deeplinks zijn de links die ook nog werken als iemand de app eerst moet installeren. De echte keuze is welk mechanisme je app opent, en of de link een installatie moet overleven.
Zo verhouden de vier zich tot elkaar:
| Custom URL scheme | Universal Links | Android App Links | Deferred deeplinks | |
|---|---|---|---|---|
| Platform | iOS en Android | Apple-platforms | Android 6 en hoger | iOS en Android |
| Ziet eruit als | myapp://offer/42 | https://example.com/offer/42 | https://example.com/offer/42 | Meestal een https://-link op een linkdomein |
| Bewijs dat de link van jou is | Geen | apple-app-site-association-bestand op je domein | assetlinks.json-bestand op je domein | Hangt af van het onderliggende mechanisme |
| App geïnstalleerd | Opent de app | Opent de app direct | Opent de app direct, zonder keuzemenu | Opent de app |
| App niet geïnstalleerd | Mislukt, vaak met een foutmelding | Opent dezelfde URL op je website | Opent dezelfde URL op je website | Stuurt de gebruiker naar de store en levert de bestemming bij de eerste keer openen |
| Server nodig | Nee | Ja, om het bestand te hosten | Ja, om het bestand te hosten | Ja, plus een SDK in de app |
| Het meest geschikt voor | Overdrachten tussen apps en als terugvaloptie | Elke link waarop iemand tikt op iOS | Elke link waarop iemand tikt op Android | Referral-, affiliate-, advertentie- en uitnodigingslinks |
Voor de basis kun je onze eenvoudige uitleg lezen over wat deeplinking is. Deze post behandelt de verschillen en welke je moet kiezen.
Wat is het verschil tussen universal links en deeplinks?
Een universal link is een soort deeplink, dus het zijn geen alternatieven voor elkaar. Elke universal link is een deeplink, maar niet elke deeplink is een universal link. Als mensen zoeken op "universal links vs deep links", bedoelen ze bijna altijd "Universal Links vs links met een custom URL scheme", omdat het custom scheme jarenlang de enige soort deeplink was die er bestond.
De praktische verschillen zitten in het adres (een zelfbedacht voorvoegsel zoals myapp:// tegenover een gewoon webadres op een domein dat van jou is), eigendom (niemand controleert wie een custom scheme heeft geregistreerd, terwijl een universal link wordt geverifieerd aan de hand van je website) en wat er gebeurt zonder de app (een link met een custom scheme kan nergens heen, terwijl een universal link nog steeds een werkende webpagina is).
Apple is duidelijk over zijn voorkeur. In de documentatie over het definiëren van een custom URL scheme staat dat custom URL schemes weliswaar "an acceptable form of deep linking" zijn, maar dat "universal links are strongly recommended".
Wat betekent "universal deep linking"?
"Universal deep linking" is geen officiële term. Het wordt losjes gebruikt als naam voor Apple's Universal Links, en voor één link die overal werkt (iOS en Android, met of zonder geïnstalleerde app). Die tweede betekenis is eigenlijk een deferred deeplink die is gebouwd op Universal Links en App Links, wat verderop aan bod komt.
Custom URL scheme vs Universal Links: wat verandert er op iOS?
Op iOS verandert de overstap van een custom scheme naar Universal Links wie je links kan claimen, wat gebruikers zien zonder de app en hoeveel je moet instellen.
Wie de link kan claimen
Met een custom scheme kan iedereen dat. Volgens de documentatie van Apple is een identifier in reverse-DNS-stijl een goede gewoonte, maar "doesn't prevent other apps from registering the same scheme and handling the associated links", en als meerdere apps hetzelfde scheme registreren, geldt: "the app the system targets is undefined".
Met Universal Links kun alleen jij dat. Wanneer iemand je app installeert, controleert het systeem een bestand op je webserver om te bevestigen dat je website de app toestaat om de URL's te openen. Zoals Apple's gids over apps en websites laten linken naar je content het zegt: alleen jij kunt dat bestand op je server plaatsen, en dat beveiligt de koppeling.
Wat gebruikers zien als de app ontbreekt
Een link met een custom scheme is geen webadres, dus een telefoon zonder de app kan er niets mee. Apple beschrijft een universal link als één URL die "works for both your website and your app": als de persoon de app niet heeft geïnstalleerd, opent het systeem de URL in de standaardbrowser en handelt je website hem af.
Wat je moet instellen
Een custom scheme is een paar regels in de configuratie van je app en verder niets. Universal Links hebben twee dingen nodig die met elkaar moeten overeenkomen:
- Een
apple-app-site-association-bestand (zonder bestandsextensie) in de map.well-knownvan je website, met je app en de paden die hij afhandelt. - De Associated Domains-capability in je app, met een
applinks:-vermelding voor het domein.
Apple's gids over het ondersteunen van associated domains noemt een paar details waar teams op vastlopen. Het bestand moet worden gehost via https:// met een geldig certificaat en zonder redirects. Elk subdomein heeft een eigen vermelding nodig en moet een eigen bestand serveren. En sinds iOS 14 vragen apparaten het bestand op bij een door Apple beheerd content delivery network in plaats van bij je server. Volgens Apple vraagt dat netwerk je bestand binnen 24 uur op, en controleren apparaten na de installatie ongeveer één keer per week op updates. Een wijziging in het bestand is dus niet direct actief.
Waar Universal Links zich anders gedragen
Als een gebruiker in Safari op je website surft en op een universal link op hetzelfde domein tikt, houdt Apple hem in Safari, "respecting the user's most likely intent to continue within the browser". Een link naar een ander domein opent de app wel. Custom schemes kennen zo'n regel niet, en dat is een van de redenen dat ze niet zijn verdwenen.
App Links vs Universal Links: zijn ze hetzelfde?
Android App Links en Universal Links doen hetzelfde werk op verschillende besturingssystemen. Beide zijn standaard https://-links, beide vertrouwen op een bestand op je website om eigendom te bewijzen, en beide vallen terug op de webpagina als de app niet is geïnstalleerd. De meeste apps die in beide stores staan, stellen beide in op hetzelfde domein en dezelfde paden, zodat één link op elke telefoon werkt.
De verschillen zitten in de details:
| Universal Links | Android App Links | |
|---|---|---|
| Verificatiebestand | /.well-known/apple-app-site-association | /.well-known/assetlinks.json |
| Identificeert de app aan de hand van | App-identifier (Team ID plus bundle identifier) | Pakketnaam plus vingerafdruk van het ondertekeningscertificaat |
| Gedeclareerd in de app met | Associated Domains-capability | Intent filter met android:autoVerify="true" |
| Niet-geverifieerde versie | Geen equivalent voor https://-links | Gewone deeplink, die een keuzemenu kan tonen |
| Ondersteund op | Apple-platforms | Android 6 en hoger, op apparaten met Google-services |
Android heeft een tussenlaag die iOS niet heeft
Op Android heeft "deeplink" een specifieke betekenis. Google's documentatie over App Links maakt onderscheid tussen twee dingen:
- Deeplinks, een standaardfunctie van het platform die op alle Android-versies beschikbaar is. Een app kan zich registreren voor custom schemes of voor webdomeinen, maar deze links zijn "subject to the system disambiguation dialog".
- Android App Links, die Google "an enhanced deep linking capability" noemt. Zodra ze zijn geverifieerd, openen ze je app direct, "without requiring the user to select your app from a disambiguation dialog".
Op Android heeft de vraag "deeplinks vs App Links" dus een letterlijk antwoord: een App Link is een deeplink naar je eigen website die de verificatie heeft doorstaan. Google's gids over het maken van deeplinks geeft de volgorde die Android aanhoudt: open de standaardapp van de gebruiker voor de link, of de enige app die hem kan afhandelen, of toon anders het keuzemenu. Met verificatie sla je die laatste stap over.
Waar passen deferred deeplinks in?
Deferred deeplinks zijn geen extra mechanisme dat concurreert met de andere drie. Ze zijn een gedrag dat er bovenop komt. "Deferred" beschrijft wat de link kan (zijn bestemming onthouden over een installatie heen), niet hoe hij de app opent.
Universal Links en App Links stoppen allebei op hetzelfde punt. Als de app ontbreekt, krijgt de gebruiker je webpagina. Als hij daarna de app uit de store installeert en opent, start de app op het beginscherm zonder te weten welke link hem daar bracht. Een deferred deeplink dicht dat gat: de link gaat naar een server die de bestemming vastlegt, de gebruiker wordt naar de juiste store gestuurd, en een SDK in de app vraagt de bestemming op bij de eerste keer starten.
Op Android helpt het platform hierbij. Met de Install Referrer API van Google Play kan een app de referrer-URL van zijn eigen installatie ophalen, samen met het moment van de klik op de referrer en het moment waarop de installatie begon. Op iOS bestaat er geen vergelijkbare overdracht van de store naar de app, dus bewaart het linkplatform de gegevens op zijn eigen servers en geeft het ze terug wanneer de nieuwe installatie zich meldt.
Daarom komt er bij deferred deeplinking bijna altijd een dienst en een SDK kijken. Onze gids over deferred deeplinks en waarom ze belangrijk zijn voor app-marketing behandelt de werking en de toepassingen uitgebreid.
Welk type deeplink moet je gebruiken?
Begin bij wie er op de link gaat tikken en of die persoon je app al heeft.
| Situatie | Gebruik |
|---|---|
| E-mails, pushmeldingen en berichten aan bestaande gebruikers | Universal Links en App Links |
| Links op je eigen website die de app moeten openen | Universal Links en App Links (denk aan de Safari-regel voor hetzelfde domein) |
| Een van je apps die een andere opent, of een callback vanuit een andere app naar jouw app | Custom URL scheme, of Universal Links als je de eigendomsgarantie nodig hebt |
| Content delen, waarbij sommige ontvangers de app niet hebben | Minimaal Universal Links en App Links, deferred als de bestemming de installatie moet overleven |
| Referral-, uitnodigings-, creator-, affiliate- en betaalde advertentielinks | Deferred deeplinks |
| QR-codes op verpakkingen of drukwerk | Deferred deeplinks, omdat je niet kunt weten wie de app heeft |
De korte versie
- Gebruik Universal Links en App Links als basis. Zowel Apple als Google raden ze aan, ze kunnen niet door een andere app worden geclaimd en ze vallen terug op een werkende webpagina.
- Voeg deferred deeplinking toe zodra links mensen zonder de app bereiken. Op dat punt moet de bestemming, en vaak ook de identiteit van degene die de link deelde, de weg door de store overleven.
- Houd een custom URL scheme aan als ondersteunende laag. Zet er nooit een in een marketingmail of een social post.
Heb je nog een custom URL scheme nodig?
Vaak wel, maar niet als de link die je aan mensen geeft. Custom schemes blijven nuttig voor communicatie tussen apps en als ingang naar de app wanneer er geen geverifieerde link beschikbaar is. Omdat elke app een scheme kan registreren, adviseert Apple om elke parameter in een binnenkomende URL te valideren en te beperken wat zulke links mogen doen.
Moet je deferred deeplinks zelf bouwen of een platform gebruiken?
Universal Links en App Links zijn gratis platformfuncties die niets anders nodig hebben dan een webserver. Deferred deeplinking is anders, omdat iemand de server moet draaien die elke tik onthoudt en de SDK die hem bij de eerste keer openen ophaalt.
De opties zijn Insert Links (de deferred deeplinks die in Insert Affiliate zijn ingebouwd), algemene linkplatforms zoals Branch en AppsFlyer, of zelf bouwen. Wat logisch is, hangt af van waar de links voor zijn:
- Als de links bestaan om verkopen toe te kennen aan affiliates, creators of gebruikers die iemand doorverwijzen, moeten de link en de commissietracking één identifier delen. Insert Affiliate doet dit met Insert Links. Elke affiliate krijgt een link die herkent of het om iOS of Android gaat en of de app is geïnstalleerd. Zo ja, dan opent de link de app en worden toekomstige verkopen aan die affiliate toegekend. Zo niet, dan gaat de gebruiker naar de App Store of Google Play, en bij de eerste keer openen onthoudt de SDK welke affiliate hem heeft doorverwezen.
- Als je al een linkplatform voor campagnes gebruikt, hoef je dat niet te vervangen. Insert Affiliate kan de affiliate uitlezen uit links die zijn gemaakt in Branch, AppsFlyer of een ander deeplinkplatform.
- Als je het zelf bouwt, reken dan op het onderhoud om de overdracht tijdens de installatie werkend te houden in beide stores terwijl besturingssystemen veranderen.
Insert Links laten ook zien hoe deze mechanismen op elkaar stapelen in plaats van met elkaar te concurreren. De minimale setup is een custom URL scheme. Universal Links en App Links zijn een optionele, aanbevolen stap daarbovenop: je voegt je Apple Team ID en Android SHA-256-certificaatvingerafdruk toe in het dashboard en voegt het linkdomein toe aan je app, waarna geïnstalleerde gebruikers direct in de app terechtkomen zonder dat eerst de browser laadt. Het deferred gedrag zit boven beide. De installatiegids voor Insert Links laat elke laag zien.
Veelgestelde vragen
Zijn universal links hetzelfde als deeplinks?
Niet helemaal. Een universal link is één soort deeplink: de geverifieerde https://-variant van Apple. "Deeplink" omvat ook links met een custom URL scheme, Android App Links en deferred deeplinks. Wanneer de twee tegenover elkaar worden gezet, bedoelt men met "deeplink" meestal de oudere stijl met een custom scheme.
Wat is het Android-equivalent van Universal Links?
Android App Links. Dat zijn https://-links die worden geverifieerd via een assetlinks.json-bestand op je domein, en zodra ze zijn geverifieerd openen ze je app zonder het keuzemenu "Openen met". Ze worden ondersteund op Android 6 en hoger, op apparaten met Google-services.
Werken universal links als de app niet is geïnstalleerd?
Ze werken als weblinks. Dezelfde URL opent in de browser en je website handelt hem af, dus de gebruiker blijft niet achter met een foutmelding. Wat ze niet doen, is de bestemming meenemen door een installatie heen. Dat is de taak van een deferred deeplink.
Kan één link tegelijk een universal link en een deferred deeplink zijn?
Ja, en goede links zijn dat meestal ook. De link is een https://-URL die de app direct opent via Universal Links of App Links als de app is geïnstalleerd, en die terugvalt op een doorverwijzing naar de store met een opzoeking bij de eerste keer openen als dat niet zo is. De gebruiker ziet altijd maar één link.
Heb ik een deeplinkplatform nodig voor Universal Links en App Links?
Nee. Beide zijn ingebouwd in de besturingssystemen en hebben alleen een bestand op je website en een instelling in je app nodig. Een dienst wordt nuttig zodra je deferred deeplinking nodig hebt, één link die per apparaat doorstuurt, of gegevens zoals een referral- of affiliatecode die door de installatie heen worden meegenomen.
Volgende stap
Leg elke link die je app vandaag verstuurt naast de tabel bovenaan. Alles wat nog op een kaal custom scheme draait en waarop een persoon tikt, moet eerst naar Universal Links en App Links. Alles wat mensen zonder de app bereikt, vooral links die bepalen wie er betaald krijgt, moet deferred worden. Zijn die links voor affiliates of referrals, dan kun je gratis starten met Insert Affiliate, en onze gids over het tracken van affiliate-omzet in mobiele apps behandelt wat er gebeurt nadat de link zijn werk heeft gedaan.
