Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Ricevi collegamenti dinamici Firebase su Android

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Per ricevere i collegamenti dinamici Firebase che hai creato , devi includere l'SDK di collegamenti dinamici nella tua app e chiamare il metodo FirebaseDynamicLinks.getDynamicLink() quando l'app viene caricata per far passare i dati nel collegamento dinamico.

  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 ), aggiungi la dipendenza per la libreria Android di Dynamic Links. Ti consigliamo di utilizzare la BoM Android di 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.

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:30.5.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 BoM Android di Firebase, la tua app utilizzerà sempre versioni compatibili delle librerie Android di Firebase.

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

    Se scegli di non utilizzare la distinta base di 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 delle librerie, 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.0.2'
        implementation 'com.google.firebase:firebase-analytics:21.1.1'
    }
    

    Kotlin+KTX

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

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

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

    Se scegli di non utilizzare la distinta base di 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 delle librerie, 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-ktx:21.0.2'
        implementation 'com.google.firebase:firebase-analytics-ktx:21.1.1'
    }
    
  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 di intenti all'attività che gestisce i link diretti per la tua app. Il filtro dell'intento dovrebbe catturare i deep link 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 da te specificato, la tua app avvierà l'attività con questo filtro di intenti per gestire il collegamento.

Per ricevere il deep link, chiama il metodo getDynamicLink() :

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);
            }
        });

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

È 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 quei dati in modo che vengano elaborati solo una volta dalla tua app.

Normalmente chiami getDynamicLink() nell'attività principale e in tutte le attività avviate dai filtri di intent che corrispondono al collegamento.

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

  • Chiama FirebaseDynamicLinks.getDynamicLink() nei punti di ingresso dell'app:
    • Attività di avvio. es: action="android.intent.action.MAIN" , category="android.intent.category.LAUNCHER" .
    • Punti di ingresso dell'attività. es: onStart() , onCreate() .
    • Attività di collegamento profondo.
  • Configura e utilizza 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() .

In 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 al tuo progetto nella console Firebase . Dynamic Links gestirà la configurazione dell'associazione del sito Web App Links per il tuo dominio Dynamic Links.

Aggiungi un filtro dell'intento verificato automaticamente all'attività che gestirà il collegamento dinamico, impostando l'host sul dominio Collegamenti dinamici del tuo progetto come si trova 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 deep link.

Tutti i filtri delle intenzioni di autoVerify nel file manifest devono essere registrati affinché i collegamenti alle app possano essere coinvolti. Firebase lo gestisce automaticamente per i tuoi domini Dynamic Links, ma puoi verificarlo aprendo il file assetlinks.json ospitato nel 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. Sarai in grado di ottenere il collegamento diretto e altri dati di Dynamic Link chiamando getDynamicLink() nell'attività a cui hai aggiunto il filtro di intenti collegamenti app (come descritto in Gestire i collegamenti diretti ).

Nota: poiché la chiamata 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 .