Catch up on highlights from Firebase at Google I/O 2023. Learn more

Ricevi collegamenti dinamici Firebase su Android

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

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

    Quando registri la tua app, specifica la tua chiave di firma SHA-1. Se utilizzi App Links, specifica anche la tua chiave SHA-256.

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

    Per un'esperienza ottimale con i link dinamici, ti consigliamo di abilitare Google Analytics nel tuo progetto Firebase e di aggiungere l'SDK Firebase per Google Analytics alla tua app.

    Kotlin+KTX

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

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

    (Alternativa) Aggiungi le dipendenze della libreria Firebase senza utilizzare la distinta base

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

    Tieni presente che se utilizzi più librerie Firebase nella tua app, ti consigliamo vivamente di utilizzare la distinta base per gestire le versioni della libreria, che garantisce 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-ktx:21.1.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:21.3.0'
    }
    

    Java

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

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

    (Alternativa) Aggiungi le dipendenze della libreria Firebase senza utilizzare la distinta base

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

    Tieni presente che se utilizzi più librerie Firebase nella tua app, ti consigliamo vivamente di utilizzare la distinta base per gestire le versioni della libreria, che garantisce 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:21.1.0'
        implementation 'com.google.firebase:firebase-analytics:21.3.0'
    }
    
  3. Nella console Firebase , apri la sezione Collegamenti dinamici . Accetta i termini di servizio se ti viene richiesto.

Come per i link diretti semplici , devi aggiungere un nuovo filtro intent all'attività che gestisce i link diretti per la tua app. Il filtro intent dovrebbe rilevare i link diretti del tuo dominio, poiché il collegamento dinamico reindirizzerà al tuo dominio se la tua app è installata. Questo è necessario affinché la tua app riceva i dati di Dynamic Link dopo che è stata installata/aggiornata dal Play Store e si tocca il 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 collegamento dinamico con un collegamento diretto allo schema e all'host specificati, la tua app avvierà l'attività con questo filtro intent per gestire il collegamento.

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

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

Normalmente chiami getDynamicLink() nell'attività principale così come qualsiasi attività avviata dai filtri di intenti che corrispondono al collegamento.

Registra analisi

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

  • dynamic_link_app_open
  • dynamic_link_first_open
  • dynamic_link_app_update

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

  • Chiama FirebaseDynamicLinks.getDynamicLink() nei punti di ingresso dell'app:
    • Attività di avvio. ad esempio: action="android.intent.action.MAIN" , category="android.intent.category.LAUNCHER" .
    • Punti di ingresso delle attività. ad esempio: onStart() , onCreate() .
    • Attività di collegamento profondo.
  • Configurare e utilizzare Google Analytics:
    • Includi la dipendenza di Google Analytics. Questo di solito 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 direttamente i collegamenti dinamici quando l'app è già installata utilizzando Android App Links .

Assicurati di aver aggiunto l'impronta digitale del certificato SHA256 per la tua app nel tuo 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 di intent con verifica automatica all'attività che gestirà il collegamento dinamico, impostando l'host sul dominio dei collegamenti dinamici del tuo progetto come si trova nella console Firebase . Nel file 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 di intent autoVerify nel file manifest devono essere registrati affinché App Links possa interagire. Firebase lo gestisce automaticamente 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
Tutti i nomi dei pacchetti delle tue app Firebase devono essere inclusi.

I collegamenti dinamici verranno ora inviati direttamente alla tua app. Sarai in grado di ottenere il collegamento diretto e altri dati del collegamento dinamico chiamando getDynamicLink() nell'attività a cui hai aggiunto il filtro di intento App Links (come descritto in Gestire i collegamenti diretti ).

Nota: poiché l'invocazione tramite App Links porta l'utente direttamente all'app, un Dynamic Link non può rispettare la versione minima richiesta. Pertanto, una volta aperta l'app, è necessario confrontare la versione minima di Dynamic Link ( getminimumappversion ) con PackageInfo.versionCode e reindirizzare l'utente per aggiornare l'app, se necessario, utilizzando getUpdateAppIntent .