Ricevere Firebase Dynamic Links su Android

Per ricevere Firebase Dynamic Links che creato, devi includere l'SDK Dynamic Links nell'app e chiamare il metodo FirebaseDynamicLinks.getDynamicLink() quando la tua app viene caricata ottenere i dati passati in 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 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 Firebase Android BoM per controllare la versione della libreria.

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

    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'
    }

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

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

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

    Tieni presente che se utilizzi più librerie Firebase nella tua app, ti consigliamo consiglia di utilizzare BoM per gestire le versioni della libreria, 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:22.1.0'
    }
    Cerchi un modulo della libreria specifico per Kotlin? A partire da Ottobre 2023 (Firebase BoM 32.5.0), gli sviluppatori Kotlin e Java possono dipendono dal modulo principale della libreria (per i dettagli, consulta Domande frequenti su questa iniziativa).
  3. Nella console Firebase, apri Dynamic Links. . Se ti viene richiesto, accetta i Termini di servizio.

Come per i link diretti semplici, devi aggiungere un nuovo filtro per intent all'attività che gestisce i link diretti per la tua app. Il filtro per intent deve rilevare i link diretti del tuo dominio, poiché Dynamic Link reindirizzerà al tuo dominio se la tua app è installata. Questa operazione è necessaria per consentire alla tua app riceveranno i dati di Dynamic Link dopo che sono stati installati/aggiornati dal Play Store e un solo tocco su Pulsante Continua. Tra 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 link diretto allo schema e all'host da te specificati, la tua app avvia l'attività con questo filtro per intent per gestire il link.

Per ricevere il link 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);
            }
        });

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

Di solito chiami getDynamicLink() anche nell'attività principale delle attività avviate dai filtri per intent che corrispondono al link.

Registra dati e analisi

I seguenti eventi possono essere monitorati automaticamente in Google Analytics e mostrati in Console Firebase.

  • dynamic_link_app_open
  • dynamic_link_first_open
  • dynamic_link_app_update

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

  • Chiama FirebaseDynamicLinks.getDynamicLink() nei punti di ingresso della tua app:
    • Attività di Avvio app. e.g.: action="android.intent.action.MAIN", category="android.intent.category.LAUNCHER".
    • Entry point dell'attività, ad esempio: onStart(), onCreate().
    • Attività relative ai link diretti.
  • Configura e usa Google Analytics:

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 i link per app Android.

Assicurati di aver aggiunto l'impronta digitale del certificato SHA256 per la tua app al progetto in la 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 verificato automaticamente all'attività che gestirà l'evento Dynamic Link, impostando il valore ospita nel dominio Dynamic Links del progetto come nella console Firebase. In 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 link diretto.

Tutti i autoVerify filtri per intent nel file manifest devono essere registrati per l'applicazione App Link per coinvolgere il pubblico. 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
Tutte le tue app Firebase devono essere inclusi i nomi dei pacchetti.

Dynamic Links verrà inviato direttamente alla tua app. Potrai ottenere il link diretto e altre Dati di Dynamic Link chiamando getDynamicLink() nell'attività che hai aggiunto ai link app filtro per intent (come descritto Gestire i link diretti).

Nota: poiché il richiamo tramite link alle app rimanda l'utente direttamente all'app, una Dynamic Link non può rispettare la versione minima richiesta. Una volta aperta l'app, confrontare la versione minima del link dinamico ( getminimumappversion) rispetto a PackageInfo.versionCode e reindirizza l'utente all'upgrade dell'app, se necessario, utilizzando getUpdateAppIntent.