Deferred Deep Link is een mechanisme dat de doelcontext van de overgang behoudt, zelfs als de app nog niet is geïnstalleerd op het apparaat van de gebruiker. Volgens Branch Resources, verwerkt het systeem na installatie van de app automatisch de opgeslagen context en stuurt de gebruiker door naar het doelscherm. Uitgestelde diepe link lost het belangrijkste probleem van een gewone deep link op — de onmogelijkheid om te werken met niet-geïnstalleerde apps.
Belangrijkste
Deferred Deep Link is een type diepe link dat in twee fasen werkt: eerst klikt de gebruiker op de link voordat de app is geïnstalleerd, en vervolgens herstelt het systeem de context na voltooiing van de installatie. Een gewone deep link opent de app alleen als deze al is geïnstalleerd, terwijl deferred alle overdrachtsparameters behoudt en deze bij de eerste start doorgeeft.
De technologie is vooral in trek geraakt met de groei van mobiele marketing, waar advertentiecampagnes vaak gericht zijn op gebruikers die de app nog niet hebben geïnstalleerd. Zonder deferred deep link zou elke dergelijke overgang eenvoudigweg eindigen met het downloaden van de app zonder enige context — de gebruiker zou op het hoofdscherm terechtkomen in plaats van het doelscherm.
Een gewone deep link opent de doelinhoud in een reeds geïnstalleerde app. Als de app niet is geïnstalleerd, toont de browser een foutmelding. Deferred Deep Link werkt via een tussenliggende server die de gebruiker doorstuurt naar de winkel en na installatie de app informeert over de opgeslagen parameters. Op deze manier vereist een deferred link geen voorafgaande installatie van de app en zorgt het voor een naadloze gebruikersreis van advertentie naar inhoud.
Het verwerkingsproces van een deferred deep link bestaat uit drie fasen. In de eerste fase klikt de gebruiker op de link — de server bepaalt of de app is geïnstalleerd. Zo niet, genereert hij een unieke sessie-ID, slaat de overdrachtsparameters op en stuurt de gebruiker door naar de App Store of Google Play met deze ID.
In de tweede fase installeert de gebruiker de app uit de winkel. Na installatie en eerste start maakt de SDK van het platform verbinding met de server, verzendt de apparaat-ID en ontvangt de opgeslagen overdrachtsparameters. In de derde fase verwerkt de app de ontvangen gegevens en stuurt de gebruiker automatisch door naar het doelscherm.
Voor het opslaan van parameters tussen het klikken op de link en de installatie worden verschillende mechanismen gebruikt. Op iOS is dit de sleutelhanger (iCloud Keychain) of het klembord, op Android — de Install Referrer API. Firebase Dynamic Links gebruikt een combinatie van localStorage van de browser en de verwijzingslink van de winkel om de sessie-ID door te geven. Branch.io past zijn eigen protocol toe met gegevensreserve in meerdere opslagplaatsen.
In iOS wordt deferred deep link geïmplementeerd via een combinatie van Universal Links en Shared Web Credentials. Wanneer de gebruiker via een Universal Link op de website van de app klikt, slaat de Safari-browser de overdrachtsparameters op in de iCloud Keychain die aan het domein van de app is gekoppeld. Na installatie van de app uit de App Store controleert iOS of er opgeslagen gegevens zijn en geeft deze bij de eerste start door aan de app.
Apple biedt geen ingebouwde API voor deferred deep link — de implementatie ligt volledig bij SDK’s van derden. Firebase Dynamic Links gebruikt het passive deferred mechanisme, waarbij gegevens worden opgeslagen in browsercookies en worden hersteld via een omleiding naar een speciale URL bij de eerste start van de app.
Sinds iOS 14 heeft Apple de privacyregels aangescherpt, wat gevolgen heeft gehad voor de deferred deep link-mechanismen. Het klembord kan niet langer worden gebruikt om gegevens te lezen zonder expliciete toestemming van de gebruiker. iCloud Keychain heeft ook beperkingen op de gegevensomvang — niet meer dan 4 KB per schrijfactie. Dit maakt servergebaseerde oplossingen met een unieke sessie-ID de voorkeursmethode voor contextoverdracht.
Android biedt flexibelere mogelijkheden voor deferred deep link via de Install Referrer API. Wanneer de gebruiker via een link naar Google Play gaat, registreert de winkel de referrer — een string met de overdrachtsparameters. Na installatie ontvangt de app deze string via de Install Referrer API en haalt er de doelcontext uit. Dit is het meest betrouwbare deferred deep link-mechanisme op Android.
Voor apps die niet via Google Play worden gedistribueerd, ondersteunt Android een verwijzings-BroadcastReceiver. De ontwikkelaar kan na installatie een aangepaste Intent met parameters verzenden en de app ontvangt deze via de in het manifest geregistreerde BroadcastReceiver. Dit mechanisme is echter minder betrouwbaar omdat het afhangt van de implementatie van de installer.
De Install Referrer API biedt informatie over de installatiebron, inclusief de referrer-URL, het tijdstip van de overgang en het installatietijdstip. De maximale lengte van de referrer-string is 8 KB, voldoende voor het doorgeven van alle benodigde deep link-parameters. De API is beschikbaar op apparaten met Google Play Store versie 8.3.73 en hoger en wordt ondersteund op Android 5.0 (API 21).
Firebase Dynamic Links is het populairste gratis hulpmiddel voor het implementeren van deferred deep link op beide platforms. Firebase beheert automatisch alle fasen van de deferred overgang: doorsturen naar de winkel bij afwezigheid van de app, opslaan van parameters op de Firebase-server en het doorgeven ervan aan de SDK bij de eerste start van de app.
Voor implementatie volstaat het om de Firebase SDK in het project te integreren, een Dynamic Link te maken via de Firebase Console met opgave van de diepe link en campagneparameters. De Firebase SDK wordt automatisch aangeroepen bij het starten van de app en controleert op een inkomende Dynamic Link via de methode getDynamicLink().
Voorbeeld van verwerking van een deferred Firebase Dynamic Link in een Activity in Kotlin. De code werkt hetzelfde voor cold start en warm start bij het starten van de app.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
checkDeferredLink()
}
private fun checkDeferredLink() {
FirebaseDynamicLinks.getInstance()
.getDynamicLink(intent)
.addOnSuccessListener link ->
val deferredLink = link?.link.toString()
if (deferredLink.isNotEmpty()) {
navigateToContent(deferredLink)
}
}
}
}
De methode getDynamicLink() retourneert een PendingTask met een DynamicLink-object. Als de app is geïnstalleerd na het klikken op de link, ontvangt de listener de gegevens met parameters. Als de app al was geïnstalleerd voordat erop werd geklikt, retourneert de methode dezelfde gegevens als bij een gewone deep link. De vlag minimumAppVersion in de linkparameters maakt het mogelijk om de minimale app-versie voor verwerking in te stellen.
Deferred Deep Link biedt aanzienlijke voordelen voor marketingcampagnes: de gebruiker ontvangt de doelinhoud na installatie zonder extra handelingen, wat de conversie en retentie verhoogt. Voor verwijzingsprogramma’s maken deferred links het mogelijk om de uitnodiging ondubbelzinnig te koppelen aan de installatie en acties van de nieuwe gebruiker.
De technologie heeft echter ook beperkingen. Deferred deep link werkt niet in browsers die cookies van derden blokkeren, en op iOS vanaf versie 14 is extra configuratie vereist voor gebruik met iCloud Keychain. Bovendien kunnen er tussen het klikken op de link en de installatie meerdere dagen zitten, en niet alle SDK’s garanderen het behoud van gegevens gedurende een dergelijke periode.
Deferred deep link is verplicht voor advertentiecampagnes gericht op nieuwe gebruikers, e-mailnieuwsbrieven met uitnodigingen en verwijzingsprogramma’s. Voor reeds geïnstalleerde gebruikers volstaat een gewone deep link. Als de app geen marketingcampagnes en verwijzingsmechanismen gebruikt, is deferred deep link niet nodig — Universal Links en App Links zijn voldoende.
Houd bij het kiezen van de implementatie rekening met de kosten: Firebase Dynamic Links is gratis, maar heeft beperkte analyse. Branch.io en AppsFlyer bieden geavanceerde attributie, maar vereisen een abonnement. Voor kleine projecten is Firebase de optimale oplossing, voor enterprise met tientallen advertentiekanalen — commerciële MMP’s.
Veelgestelde vragen
Een gewone deep link vereist een geïnstalleerde app en opent deze direct. Deferred Deep Link werkt zelfs als de app niet is geïnstalleerd — het stuurt door naar de winkel en herstelt na installatie de context van de overgang en opent het doelscherm.
De bewaartermijn hangt af van het platform. Firebase Dynamic Links bewaart parameters tot 30 dagen. Branch.io bewaart gegevens tot 90 dagen. Op Android bewaart de Install Referrer API de referrer-string tot het moment van eerste uitlezing door de app, maar niet langer dan 90 dagen.
Op een desktop heeft deferred deep link geen zin, omdat de app niet via de winkel op de computer kan worden geïnstalleerd. Bij het klikken op de link vanaf een desktop ziet de gebruiker een fallback URL — de webversie van de inhoud of een pagina met een QR-code voor installatie op een mobiel apparaat.
Chrome, Safari en Samsung Internet ondersteunen deferred deep link via cookie- en localStorage-mechanismen. Firefox heeft beperkte ondersteuning vanwege het strikte blokkeringsbeleid voor cookies van derden. Voor maximale dekking wordt het gebruik van Firebase of Branch.io SDK’s aanbevolen.
Technisch gezien kan er een zelfstandige oplossing worden geïmplementeerd via een tussenliggende server en verwijzingsmechanismen. Dit vereist echter de ontwikkeling en het onderhoud van serverinfrastructuur, cookie-beheer, integratie met elke winkel en het oplossen van problemen op verschillende platforms. Kant-en-klare Firebase en Branch.io SDK’s versnellen de ontwikkeling tientallen keren.
Samenvatting
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.
Lees ook