Ricevere Firebase Dynamic Links su Android

Per ricevere il Firebase Dynamic Links che hai creato, devi includere l'SDK Dynamic Links nella tua app e chiamare il metodo FirebaseDynamicLinks.getDynamicLink() quando l'app viene caricata per ottenere i dati passati nel Dynamic Link.

  1. Se non l'hai già fatto, aggiungi Firebase al tuo progetto Android.

    Quando registri l'app, specifica la chiave di firma SHA-1. Se utilizzi i link alle app, specifica anche la chiave SHA-256.

  2. Nel file Gradle del modulo (a livello di app) (di solito <project>/<app-module>/build.gradle.kts o <project>/<app-module>/build.gradle), aggiungi la dipendenza per la libreria Dynamic Links per Android. Ti consigliamo di utilizzare la Firebase Android BoM per controllare il controllo delle versioni della libreria.

    Per un'esperienza ottimale con Dynamic Links, ti consigliamo di attivare Google Analytics nel tuo progetto Firebase e di aggiungere l'SDK Firebase per Google Analytics alla tua app.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:35.0.1"))
    
        // 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'
    }

    Con la Firebase Android BoM, la tua app utilizzerà sempre versioni compatibili delle librerie Firebase Android.

    (Alternativa)  Aggiungi le dipendenze della libreria Firebase senza utilizzare BoM

    Se scegli di non utilizzare la Firebase BoM, devi specificare ogni versione della libreria Firebase nella riga di dipendenza.

    Tieni presente che se utilizzi più librerie Firebase nella tua app, ti consigliamo vivamente di utilizzare BoM per gestire le versioni delle librerie, in modo da garantire che tutte le versioni siano compatibili.

    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:24.0.0'
    }
  3. Nella consoleFirebase, apri la sezione Dynamic Links. Se ti viene richiesto, accetta i Termini di servizio.

Come per i deep link semplici, devi aggiungere un nuovo filtro per intent all'attività che gestisce i deep link per la tua app. Il filtro per intent deve intercettare i deep link del tuo dominio, poiché Dynamic Link reindirizzerà al tuo dominio se la tua app è installata. Questo è necessario affinché la tua app riceva i dati Dynamic Link dopo l'installazione/l'aggiornamento dal Play Store e il tocco sul pulsante Continua. In 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>

Quando gli utenti aprono un Dynamic Link con un deep link allo schema e all'host che specifichi, la tua app avvierà l'attività con questo filtro per intent per gestire il link.

Per ricevere il deep link, chiama il metodo 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);
            }
        });

Devi chiamare getDynamicLink() in ogni attività che potrebbe essere avviata dal link, anche se il link potrebbe essere disponibile dall'intent utilizzando getIntent().getData(). La chiamata a getDynamicLink() recupera il link e cancella i dati in modo che vengano elaborati una sola volta dalla tua app.

In genere, chiami getDynamicLink() nell'attività principale e in tutte le attività avviate dai filtri per intent che corrispondono al link.

Analisi dei record

I seguenti eventi possono essere monitorati automaticamente in Google Analytics e visualizzati nella console Firebase.

  • dynamic_link_app_open
  • dynamic_link_first_open
  • dynamic_link_app_update

Per registrare questi eventi, devi configurare Google Analytics prima di recuperare il deep link. Verifica che siano soddisfatte le seguenti condizioni:

  • Chiama FirebaseDynamicLinks.getDynamicLink() nei punti di accesso dell'app:
    • Attività di Avvio app, ad esempio: action="android.intent.action.MAIN", category="android.intent.category.LAUNCHER".
    • Entry point delle attività, ad esempio: onStart(), onCreate().
    • Attività di deep linking.
  • Configura e utilizza Google Analytics:
    • Includi la dipendenza Google Analytics. In genere, questo viene aggiunto automaticamente dal plug-in Gradle google-services.
    • Includi il file di configurazione google-services.json nella tua app.
    • Chiama FirebaseAnalytics.getInstance() prima di chiamare FirebaseDynamicLinks.getDynamicLink().

Su Android 6.0 (livello API 23) e versioni successive, puoi configurare la tua app in modo che gestisca Dynamic Links direttamente quando è già installata utilizzando Android App Links.

Assicurati di aver aggiunto la fingerprint del certificato SHA256 della tua app al progetto nella console Firebase. Dynamic Links gestirà la configurazione dell'associazione del sito web di App Links per il tuo dominio Dynamic Links.

Aggiungi un filtro per intent con verifica automatica all'attività che gestirà Dynamic Link, impostando l'host sul dominio Dynamic Links del progetto, come indicato nella console Firebase. Nella 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>

Tieni presente che android:host deve essere impostato sul tuo dominio Dynamic Links e non sul dominio del tuo deep link.

Tutti i filtri per intent autoVerify nel manifest devono essere registrati affinché i link alle app vengano attivati. Firebase gestisce automaticamente questa operazione per i tuoi domini Dynamic Links, ma puoi verificarlo aprendo il file assetlinks.json ospitato sul tuo dominio Dynamic Links:

https://YOUR_DOMAIN/.well-known/assetlinks.json
Devono essere inclusi tutti i nomi dei pacchetti delle tue app Firebase.

Dynamic Links ora verrà inviato direttamente alla tua app. Potrai ottenere il deep link e altri dati Dynamic Link chiamando getDynamicLink() nell'attività a cui hai aggiunto il filtro per intent di App Links (come descritto in Gestisci i deep link).

Nota:poiché l'attivazione tramite link alle app indirizza l'utente direttamente all'app, un Dynamic Link non può rispettare la versione minima richiesta. Quindi, una volta aperta l'app, devi confrontare la versione minima del link dinamico ( getminimumappversion) con PackageInfo.versionCode e reindirizzare l'utente per eseguire l'upgrade dell'app, se necessario, utilizzando getUpdateAppIntent.