Recevoir Firebase Dynamic Links sur Android

Pour recevoir les Firebase Dynamic Links que vous avez créés, vous devez inclure le SDK Dynamic Links dans votre application et appeler la méthode FirebaseDynamicLinks.getDynamicLink() lorsque votre application se charge pour obtenir les données transmises dans le 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 des liens vers une application, 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 la Firebase Android BoM pour contrôler la gestion des versions de la bibliothèque.

    Pour une expérience optimale avec Dynamic Links, nous vous recommandons d'activer 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:34.11.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 les Firebase Android BoM, votre application utilisera toujours des versions compatibles des bibliothèques Firebase Android.

    (Autre solution)  Ajouter des dépendances de bibliothèque Firebase sans utiliser la BoM

    Si vous choisissez de ne pas utiliser la 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, nous vous recommandons vivement d'utiliser la BoM pour gérer les versions des bibliothèques, 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:23.2.0'
    }
  3. Dans la Firebase console, ouvrez la Dynamic Links section. Acceptez les conditions d'utilisation si vous y êtes invité.

Comme pour les liens profonds simples, vous devez ajouter un nouveau filtre d'intent à l'activité qui gère les liens profonds pour votre application. Le filtre d'intent doit intercepter les liens profonds de votre domaine, car le Dynamic Link redirigera vers votre domaine si votre application est installée. Cela est nécessaire pour que votre application reçoive les données Dynamic Linkaprès son installation/mise à jour depuis le Play Store et qu'un utilisateur appuie sur le 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 spécifiez, votre application démarre l'activité avec ce filtre d'intent pour gérer le lien.

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

Kotlin

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é qui peut être lancée par le lien, même si le lien est disponible à partir de l'intent à l'aide de getIntent().getData(). L'appel de getDynamicLink() récupère le lien et efface ces données afin qu'elles ne soient traitées qu'une seule fois par votre application.

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

Enregistrer les données analytiques

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

  • dynamic_link_app_open
  • dynamic_link_first_open
  • dynamic_link_app_update

Pour enregistrer ces événements, vous devez configurer Google Analytics avant de vous 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, par exemple : action="android.intent.action.MAIN", category="android.intent.category.LAUNCHER".
    • Points d'entrée de l'activité, par exemple : onStart(), onCreate().
    • Activités de liens profonds.
  • Configurez et utilisez Google Analytics :
    • Incluez la dépendance Google Analytics. Elle est généralement ajoutée automatiquement par le google-services plug-in Gradle.
    • Incluez le fichier de configuration dans votre application.google-services.json
    • Appelez FirebaseAnalytics.getInstance() avant d'appeler FirebaseDynamicLinks.getDynamicLink().

Sous Android 6.0 (niveau d'API 23) ou version ultérieure, vous pouvez configurer votre application pour qu'elle gère directement les Dynamic Links lorsqu'elle est déjà installée à l'aide de liens vers une application Android.

Assurez-vous d'avoir ajouté l'empreinte de certificat SHA256 de votre application à votre projet dans la Firebase console. Dynamic Links gérera la configuration de l'association de site Web des liens vers une application pour votre Dynamic Links domaine.

Ajoutez un filtre d'intent à validation automatique à l'activité qui gérera le Dynamic Link, en définissant l' hôte sur le domaine Dynamic Links de votre projet, comme indiqué dans la console Firebase. Dans le 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 le 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 les liens vers une application puissent être utilisés. Firebase gère cela automatiquement pour vos Dynamic Links domaines, mais vous pouvez vérifier cela en ouvrant le fichier assetlinks.json hébergé sur votre Dynamic Links domaine :

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

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

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