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 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 la tua app, specifica la chiave di firma SHA-1. Se utilizzi i collegamenti alle app, specifica anche la chiave SHA-256.

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

    Per un'esperienza ottimale con Dynamic Links, ti consigliamo di abilitare 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:32.8.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'
    }
    

    Utilizzando la distinta base Firebase per Android , la tua app utilizzerà sempre le versioni compatibili delle librerie Firebase Android.

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

    Se scegli di non utilizzare la distinta base Firebase, devi specificare ciascuna 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, il 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.2.0'
        implementation 'com.google.firebase:firebase-analytics:21.6.1'
    }
    
    Cerchi un modulo di libreria specifico per Kotlin? A partire da ottobre 2023 (Firebase BoM 32.5.0) , sia gli sviluppatori Kotlin che quelli Java potranno dipendere dal modulo della libreria principale (per i dettagli, vedere le FAQ su questa iniziativa ).
  3. Nella console Firebase , apri la sezione Collegamenti dinamici . Accetta i termini di servizio se ti viene richiesto.

Come per i collegamenti diretti semplici , devi aggiungere un nuovo filtro di intenti all'attività che gestisce i collegamenti diretti per la tua app. Il filtro dell'intento dovrebbe catturare i link diretti del tuo dominio, poiché il collegamento dinamico reindirizzerà al tuo dominio se la tua app è installata. Ciò è necessario affinché la tua app riceva i dati di Dynamic Link dopo essere stata installata/aggiornata dal Play Store e dopo aver toccato il pulsante Continua. Nel 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 specificato, la tua app avvierà l'attività con questo filtro di intenti per gestire il collegamento.

Per ricevere il collegamento diretto, 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);
            }
        });

È necessario 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 solo una volta dalla tua app.

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

Registra analisi

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 collegamento diretto. Verificare che siano soddisfatte le seguenti condizioni:

  • Chiama FirebaseDynamicLinks.getDynamicLink() nei punti di ingresso dell'app:
    • Attività del lanciatore. ad esempio: action="android.intent.action.MAIN" , category="android.intent.category.LAUNCHER" .
    • Punti di ingresso dell'attività. ad esempio: onStart() , onCreate() .
    • Attività di collegamento profondo.
  • Configura e utilizza Google Analytics:
    • Includi la dipendenza di Google Analytics. Questo di solito viene aggiunto automaticamente dal plugin 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 per gestire i collegamenti dinamici direttamente quando l'app è già installata utilizzando Collegamenti app Android .

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

Aggiungi un filtro di intenti con verifica automatica all'attività che gestirà il collegamento dinamico, impostando l'host sul dominio Collegamenti dinamici del tuo progetto come trovato 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 tuo manifest devono essere registrati affinché i collegamenti alle app possano 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 dovrebbero essere inclusi.

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

Nota: poiché il richiamo tramite i collegamenti dell'app porta l'utente direttamente all'app, un collegamento dinamico non può rispettare la versione minima richiesta. Pertanto, una volta aperta l'app, è necessario confrontare la versione minima del collegamento dinamico ( getminimumappversion ) con PackageInfo.versionCode e reindirizzare l'utente per aggiornare l'app, se necessario, utilizzando getUpdateAppIntent .