Recevoir Firebase Dynamic Links sur Android

Pour recevoir les Firebase Dynamic Links que que vous avez créé, vous devez inclure le SDK Dynamic Links dans votre application et appeler la FirebaseDynamicLinks.getDynamicLink() lorsque votre application se charge récupère les données transmises dans Dynamic Link.

  1. Si ce n'est pas déjà fait, Ajoutez Firebase à votre projet Android.

    Lorsque vous enregistrez votre application, spécifiez votre clé de signature SHA-1. Si vous utilisez App Links, spécifiez également votre clé SHA-256.

  2. Dans le fichier Gradle de votre module (au niveau de l'application) (généralement <project>/<app-module>/build.gradle.kts ou <project>/<app-module>/build.gradle), Ajoutez la dépendance pour la bibliothèque Dynamic Links pour Android. Nous vous recommandons d'utiliser Firebase Android BoM pour contrôler la gestion des versions des bibliothèques.

    Pour une expérience optimale avec Dynamic Links, nous vous recommandons activation de Google Analytics dans votre projet Firebase et d'ajouter le SDK Firebase pour Google Analytics à votre application.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.2.0"))
    
        // Add the dependencies for the Dynamic Links and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links'
        implementation 'com.google.firebase:firebase-analytics'
    }

    En utilisant Firebase Android BoM, votre application utilisera toujours des versions compatibles des bibliothèques Firebase Android.

    (Alternative) Ajouter des dépendances de la bibliothèque Firebase sans utiliser l'BoM

    Si vous choisissez de ne pas utiliser Firebase BoM, vous devez spécifier chaque version de la bibliothèque Firebase dans sa ligne de dépendance.

    Notez que si vous utilisez plusieurs bibliothèques Firebase dans votre application, recommandent d'utiliser BoM pour gérer les versions de la bibliothèque, ce qui garantit que toutes les versions sont compatibles.

    dependencies {
        // Add the dependencies for the Dynamic Links and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links:22.1.0'
        implementation 'com.google.firebase:firebase-analytics:22.1.0'
    }
    Vous recherchez un module de bibliothèque spécifique à Kotlin ? À partir d'octobre 2023 (Firebase BoM 32.5.0), les développeurs Kotlin et Java peuvent dépendre du module de bibliothèque principal (pour en savoir plus, consultez les questions fréquentes sur cette initiative).
  3. Dans la console Firebase, ouvrez Dynamic Links. . Acceptez les conditions d'utilisation si vous y êtes invité.

Comme pour liens profonds standards, vous devez ajouter un filtre d'intent à l'activité qui gère des liens profonds vers votre application. Le filtre d'intent doit détecter les liens profonds de votre domaine, car le Dynamic Link effectuera la redirection vers votre domaine si votre appli est installée. Cela est nécessaire pour que votre application reçoivent les données Dynamic Link après leur installation/mise à jour depuis le Play Store et en appuyant sur l'écran Bouton "Continuer" Dans AndroidManifest.xml:

<intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data
        android:host="example.com"
        android:scheme="https"/>
</intent-filter>

Lorsque les utilisateurs ouvrent un Dynamic Link avec un lien profond vers le schéma et l'hôte que vous avez spécifiés, votre application lancez l'activité avec ce filtre d'intent pour gérer le lien.

Pour recevoir le lien profond, appelez la méthode getDynamicLink():

Kotlin+KTX

Firebase.dynamicLinks
    .getDynamicLink(intent)
    .addOnSuccessListener(this) { pendingDynamicLinkData: PendingDynamicLinkData? ->
        // Get deep link from result (may be null if no link is found)
        var deepLink: Uri? = null
        if (pendingDynamicLinkData != null) {
            deepLink = pendingDynamicLinkData.link
        }

        // Handle the deep link. For example, open the linked
        // content, or apply promotional credit to the user's
        // account.
        // ...
    }
    .addOnFailureListener(this) { e -> Log.w(TAG, "getDynamicLink:onFailure", e) }

Java

FirebaseDynamicLinks.getInstance()
        .getDynamicLink(getIntent())
        .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
            @Override
            public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
                // Get deep link from result (may be null if no link is found)
                Uri deepLink = null;
                if (pendingDynamicLinkData != null) {
                    deepLink = pendingDynamicLinkData.getLink();
                }


                // Handle the deep link. For example, open the linked
                // content, or apply promotional credit to the user's
                // account.
                // ...

                // ...
            }
        })
        .addOnFailureListener(this, new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.w(TAG, "getDynamicLink:onFailure", e);
            }
        });

Vous devez appeler getDynamicLink() dans chaque activité susceptible d'être lancé par le lien, même s'il peut être disponible à partir de l'intent avec getIntent().getData(). Vous appelez getDynamicLink()... récupère le lien et efface les données afin qu'elles ne soient traitées l'application.

Vous appelez normalement getDynamicLink() dans l'activité principale également comme toutes les activités lancées par les filtres d'intent qui correspondent au lien.

Données analytiques d'enregistrement

Les événements suivants peuvent être suivis automatiquement dans Google Analytics et affichés dans la console Firebase.

  • dynamic_link_app_open
  • dynamic_link_first_open
  • dynamic_link_app_update

Pour enregistrer ces événements, vous devez configurer Google Analytics avant de récupérer le lien profond. Vérifiez que les conditions suivantes sont remplies:

  • Appelez FirebaseDynamicLinks.getDynamicLink() dans les points d'entrée de votre application:
    • Activités du lanceur d'applications. e.g.: action="android.intent.action.MAIN", category="android.intent.category.LAUNCHER"
    • Points d'entrée de l'activité. e.g.: onStart(), onCreate().
    • Activités liées aux liens profonds.
  • Configurez et utilisez Google Analytics:
    • Incluez la dépendance Google Analytics. Il est généralement ajouté automatiquement Plug-in Gradle google-services.
    • Incluez l'attribut google-services.json dans votre application.
    • Appelez le FirebaseAnalytics.getInstance() avant d'appeler FirebaseDynamicLinks.getDynamicLink()

Sur Android 6.0 (niveau d'API 23) ou version ultérieure, vous pouvez configurer votre application pour qu'elle gère Dynamic Links directement lorsque votre application est déjà installée en utilisant Android App Links :

Assurez-vous d'avoir ajouté l'empreinte du certificat SHA256 de votre application à votre projet dans la console Firebase. Dynamic Links gérera la configuration de l'association de sites Web avec App Links pour votre domaine Dynamic Links.

Ajoutez un filtre d'intent validé automatiquement à l'activité qui gérera Dynamic Link, en définissant le paramètre vers le domaine Dynamic Links de votre projet en tant que disponibles dans la console Firebase. Dans AndroidManifest.xml :

<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:host="example.com/link" android:scheme="http"/>
    <data android:host="example.com/link" android:scheme="https"/>
</intent-filter>

Notez que android:host doit être défini sur votre domaine Dynamic Links, et non sur le domaine de votre lien profond.

Tous les filtres d'intent autoVerify de votre fichier manifeste doivent être enregistrés pour que l'application Des liens pour interagir. Firebase gère automatiquement cette opération pour vos domaines Dynamic Links. Vous pouvez vérifier ceci en ouvrant le fichier assetlinks.json hébergé sur votre domaine Dynamic Links:

https://YOUR_DOMAIN/.well-known/assetlinks.json
Tous les noms de package de vos applications Firebase doivent être inclus.

Dynamic Links sera désormais envoyé directement à votre application. Vous pourrez obtenir le lien profond et d'autres données Dynamic Link en appelant getDynamicLink() dans l'activité à laquelle vous avez ajouté le filtre d'intent App Links (comme décrit dans la section Gérer les liens profonds).

Remarque : Étant donné que l'appel via des liens d'application redirige directement l'utilisateur vers l'application, un lien dynamique ne peut pas respecter la version minimale requise. Une fois l'application ouverte, comparer la version minimale du lien dynamique ( getminimumappversion) par rapport à PackageInfo.versionCode et redirigez l'utilisateur pour qu'il mette à niveau l'application si nécessaire à l'aide de . getUpdateAppIntent