Firebase Dynamic Links is een Google-service voor het maken van slimme links die de gebruiker naar de juiste plek in de app leiden, ongeacht of de app is geïnstalleerd of niet. Volgens Firebase Documentation sturen Dynamic Links de gebruiker automatisch door naar de App Store of Google Play wanneer de app ontbreekt en herstellen ze de context van de overgang na installatie. De smart-links van Firebase lossen het probleem van URL Scheme op, dat niet werkt met niet-geïnstalleerde apps.
Belangrijkste punten
Firebase Dynamic Links is een cloudservice van Google die uniforme universele links maakt voor mobiele apps op iOS en Android. De dynamische link bevat een diepe link naar content binnen de app, maar gedraagt zich als een gewone HTTPS-link: als de app is geïnstalleerd, opent deze deze direct, zo niet — stuurt deze door naar de app store.
In tegenstelling tot gewone URL Schemes kunnen Dynamic Links werken met niet-geïnstalleerde apps dankzij de deferred deep link-technologie. Wanneer de gebruiker de app installeert na het klikken op de link, slaat Firebase de overgangsparameters op en geeft deze door bij de eerste start. Dit opent mogelijkheden voor verwijzingsprogramma's, marketingcampagnes en uitnodigingen.
URL Schemes vereisen een geïnstalleerde app en hebben geen standaard fallback-mechanisme. Firebase Dynamic Links lossen dit probleem op via een tussenliggende Firebase-webservice die de installatiestatus van de app op het apparaat bepaalt en de gebruiker correct routeert. Één link werkt hetzelfde op beide platforms.
Firebase Dynamic Link gebruikt een domein van de vorm yourcode.page.link, dat wordt geregistreerd in Firebase Console. Wanneer een gebruiker via zo'n link navigeert, bepaalt Firebase het apparaattype en de installatiestatus van de app. Voor iOS wordt het Universal Links-mechanisme gebruikt, voor Android — App Links met automatische verificatie via Digital Asset Links.
Het verwerkingsproces omvat verschillende opeenvolgende fasen: bij het klikken op de link stuurt de browser een GET-verzoek naar de Firebase-server, de server bepaalt het platform en controleert de aanwezigheid van de app op het apparaat. Als de app is geïnstalleerd — wordt een omleiding gegenereerd naar een Universal Link of Intent met parameters voor het openen van het doelscherm. Als de app niet is geïnstalleerd — omleiding naar de App Store of Google Play om te downloaden.
De app ontvangt de link in de initialisatiefase van de Firebase SDK. De methode getDynamicLink() retourneert een PendingResult met gegevens over de overgang. Na succesvolle ontvangst worden uit de link de deep link-parameters, UTM-tags voor analyse en willekeurige gegevens die bij het aanmaken van de link zijn doorgegeven, geëxtraheerd.
Firebase Console biedt een visuele interface voor het aanmaken van Dynamic Links. De ontwikkelaar specificeert de diepe link (deep link URL), de campagnenaam, afzonderlijke instellingen voor iOS en Android, evenals analyseparameters. Na het aanmaken genereert Firebase een korte link van de vorm https://yourcode.page.link/abc123, die kan worden gebruikt in advertentiemateriaal, e-mailcampagnes en sociale media.
Voor programmatisch aanmaken van Dynamic Links wordt Firebase REST API of de client-SDK gebruikt. REST API maakt bulkgeneratie van links voor marketingcampagnes met aangepaste parameters mogelijk, inclusief een link voor sociale media en asynchrone overgangsanalyse. Bij het aanmaken van links via API is het belangrijk om de parameters socialMetaTagInfo correct op te geven — deze bepalen hoe de link wordt weergegeven bij het delen in messengers en sociale netwerken met een voorbeeldkaart.
| Parameter | Doel | Verplicht |
|---|---|---|
| Deep Link URL | Interne link naar app-content | Ja |
| iOS Bundle ID | Identificatie van de app in de App Store | Voor iOS |
| Android Package Name | Pakketnaam in Google Play | Voor Android |
| Fallback URL | Webpagina bij afwezigheid van app | Nee |
| UTM-tags | Parameters voor Google Analytics | Nee |
Om met Firebase Dynamic Links op iOS te werken, moet de Firebase SDK worden aangesloten via CocoaPods of Swift Package Manager, Info.plist worden geconfigureerd met GOOGLE_APP_ID en het Dynamic Links-domein worden geregistreerd in Associated Domains van het project. Daarna verwerkt de app automatisch de door Firebase gegenereerde Universal Links.
In Xcode moet de capability Associated Domains worden toegevoegd met een vermelding van de vorm applinks:yourcode.page.link. Firebase SDK gebruikt de methode application(_:continue:restorationHandler:) voor het verwerken van Universal Links, dus verdere integratie met AppDelegate is niet nodig — Firebase extraheert automatisch de Dynamic Link-parameters uit User Activity.
Voorbeeld van Info.plist-configuratie voor correcte initialisatie van Firebase en registratie van de Dynamic Links-handler. De sleutel FIROptions moet de projectidentificatie van GoogleService-Info.plist bevatten.
<key>FirebaseDynamicLinksCustomDomains</key>
<array>
<string>https://yourcode.page.link</string>
</array>
<key>FirebaseAppDelegateProxyEnabled</key>
<false/>
Als de AppDelegate-proxy is uitgeschakeld, moet de methode handleUniversalLink(_:) handmatig worden aangeroepen en de User Activity worden doorgegeven via continue NSUserActivity. Firebase SDK extraheert automatisch de linkparameters en retourneert DynamicLink via de completion handler.
Op Android begint de integratie van Firebase Dynamic Links met het toevoegen van afhankelijkheden in build.gradle en het google-services.json-bestand van Firebase Console. Het Dynamic Links-domein wordt geregistreerd in Firebase Console, waarna alle links met dit domein automatisch worden herkend door de Android-app via een Intent Filter met de actie VIEW. Voor correcte werking moet ook de Google Services-plugin worden toegevoegd aan de root- en module build.gradle en Gradle-synchronisatie worden uitgevoerd.
Voor correcte verwerking van links op Android moet een Intent Filter voor het Dynamic Links-domein worden toegevoegd aan de Activity die inkomende links moet ontvangen. De filter moet het https-schema, de host van uw Dynamic Links-domein en het standaardpad bevatten.
Voorbeeld van Intent Filter in AndroidManifest.xml voor het ontvangen van Dynamic Links op het domein yourcode.page.link.
<activity android:name=".MainActivity"
android:launchMode="singleTask">
<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="yourcode.page.link" />
</intent-filter>
</activity>
Het is belangrijk om launchMode in te stellen op singleTask voor de Activity die Dynamic Links ontvangt. Dit voorkomt het maken van een nieuwe Activity-instantie bij herhaalde navigatie via de link en maakt correcte verwerking van alle inkomende deep links in één instantie mogelijk.
Firebase SDK voor Android biedt de methode FirebaseDynamicLinks.getInstance().getDynamicLink(intent), die een PendingTask-object met gegevens over de link retourneert. Uit het DynamicLink-object worden de diepe URI, UTM-parameters en het tijdstempel van de overgang geëxtraheerd. Het wordt aanbevolen de verwerking uit te voeren in de methoden onCreate() en onNewIntent() van de Activity.
Bij verwerking is het belangrijk om rekening te houden met het feit dat Dynamic Link zowel bij het starten van de app vanuit koude toestand (cold start) als bij het overschakelen van een andere app naar een reeds gestarte app kan worden ontvangen. Voor het tweede geval moet onNewIntent() worden overschreven en de Dynamic Link-controle opnieuw worden aangeroepen.
Voorbeeld van het ontvangen en verwerken van Firebase Dynamic Link in MainActivity. De code verwerkt zowel cold start als overschakeling van een andere app.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
checkDynamicLink(intent)
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
checkDynamicLink(intent)
}
private fun checkDynamicLink(intent: Intent) {
FirebaseDynamicLinks.getInstance()
.getDynamicLink(intent)
.addOnSuccessListener link ->
val deepLink = link?.link.toString()
handleDeepLink(deepLink)
}
}
}
De methode addOnSuccessListener retourneert DynamicLink, waaruit de doellink wordt geëxtraheerd via link?.link. Als de listener null retourneert, betekent dit dat de Intent geen Dynamic Link bevat — dit is een normale app-start zonder inkomende link. Ook zijn UTM-tags beschikbaar voor overgangsanalyse, waaronder campaign, medium, source en content, die kunnen worden doorgegeven aan Google Analytics voor gedetailleerde evaluatie van de effectiviteit van elk marketingkanaal.
Veelgestelde vragen
Firebase Dynamic Links ondersteunt deferred deep link — de link behoudt de context, zelfs als de app niet is geïnstalleerd. Na installatie ontvangt de app alle overgangsparameters, wat onmogelijk is met gewone URL Schemes of Universal Links.
Firebase Dynamic Links vallen onder het gratis Firebase Spark-tariefplan. Er is geen limiet op het aantal aan te maken links. Sinds 2024 heeft Google echter de overgang naar een nieuwe infrastructuur aangekondigd, dus de voorwaarden kunnen veranderen.
Dynamic Links zijn bedoeld voor mobiele apps. Bij het openen vanuit een webbrowser op een desktop opent de link de fallback-URL. Gebruik voor webapplicaties gewone links of uw eigen omleidingslogica.
Firebase Console biedt de knop Test Dynamic Link voor een voorbeeld van het gedrag. U kunt ook een Android-emulator of iOS-simulator met geïnstalleerde Firebase SDK gebruiken voor het lokaal testen van alle overgangsscenario's.
De korte Firebase Dynamic Link bestaat uit het domein page.link en een willekeurig achtervoegsel van ongeveer 7 tekens. De totale lengte is ongeveer 30 tekens. De deep link binnenin kan elke lengte hebben, maar het wordt aanbevolen deze te beperken tot 2 KB voor compatibiliteit.
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