Ricevi collegamenti dinamici Firebase su Android

Per ricevere il Firebase dinamico collegamenti che si è creato , è necessario includere il link dinamici SDK nella tua app e chiamare il FirebaseDynamicLinks.getDynamicLink() metodo quando i carichi app per ottenere i dati passati nel collegamento dinamico.

  1. Se non l'hai già, aggiungi Firebase al 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. Utilizzando la Firebase Android BoM , dichiarare la dipendenza per la libreria dinamica Link Android nel modulo (a livello di app) File Gradle (di solito app/build.gradle ).

    Per un'esperienza ottimale con Dynamic Link, si consiglia consentendo di Google Analytics nel progetto Firebase e aggiungendo il Firebase SDK per Google Analytics per la vostra applicazione.

    Giava

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

    Usando il Firebase Android BoM , la vostra applicazione sarà sempre utilizzare versioni compatibili delle librerie Firebase Android.

    (Alternativa) Dichiarare Firebase dipendenze delle librerie senza utilizzare la distinta

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

    Si noti che se si utilizzano più librerie Firebase nella vostra app, ti consigliamo di utilizzare la distinta di gestire versioni della libreria, che assicura che tutte le versioni sono compatibili.

    dependencies {
        // Declare 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:20.1.1'
        implementation 'com.google.firebase:firebase-analytics:19.0.1'
    }
    

    Kotlin+KTX

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

    Usando il Firebase Android BoM , la vostra applicazione sarà sempre utilizzare versioni compatibili delle librerie Firebase Android.

    (Alternativa) Dichiarare Firebase dipendenze delle librerie senza utilizzare la distinta

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

    Si noti che se si utilizzano più librerie Firebase nella vostra app, ti consigliamo di utilizzare la distinta di gestire versioni della libreria, che assicura che tutte le versioni sono compatibili.

    dependencies {
        // Declare 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:20.1.1'
        implementation 'com.google.firebase:firebase-analytics-ktx:19.0.1'
    }
    
  3. Nella console Firebase , aprire la sezione dinamica Links. Accetta i termini di servizio se ti viene chiesto di farlo.

Come nel caso di collegamenti profondo Pianura , è necessario aggiungere un nuovo filtro intento all'attività che gestisce i collegamenti profondi per la vostra applicazione. Il filtro intent dovrebbe catturare i deep link del tuo dominio, poiché il Dynamic Link reindirizzerà al tuo dominio se la tua app è installata. Ciò è 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 specificato, la tua app avvierà l'attività con questo filtro di intenti per gestire il collegamento.

Per ricevere il profondo legame, chiamare il getDynamicLink() Metodo:

Giava

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 ->
            // 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 lanciato dal link, anche se il collegamento potrebbe essere disponibile dal intento utilizzando getIntent().getData() . Chiamata getDynamicLink() recupera il legame e cancella i dati in modo che esso viene elaborato solo una volta dalla vostra app.

Normalmente si chiama getDynamicLink() nell'attività principale così come tutte le attività avviate dai filtri intento che corrispondono il link.

Analisi dei record

I seguenti eventi possono essere monitorati automaticamente in Google Analytics e mostrati 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 le seguenti condizioni siano soddisfatte:

  • Chiamare FirebaseDynamicLinks.getDynamicLink() nei vostri punti di ingresso app:
    • Attività di lancio. 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.
  • Configura e utilizza Google Analytics:
    • Includi la dipendenza di Google Analytics. Questo è di solito aggiunto automaticamente dal google-services Gradle plugin.
    • Includere il google-services.json file di configurazione nella vostra app.
    • Chiamare FirebaseAnalytics.getInstance() prima di chiamare FirebaseDynamicLinks.getDynamicLink() .

Su Android 6.0 (livello di API 23) e superiore, è possibile impostare la vostra applicazione per gestire dinamico Link direttamente quando la vostra applicazione è già installata utilizzando Android App Link .

Assicurarsi di aver aggiunto l'impronta digitale del certificato SHA256 per la vostra applicazione nel progetto nella console Firebase . Dynamic Links gestirà la configurazione dell'associazione del sito Web App Links per il tuo dominio Dynamic Links.

Aggiungere un filtro intento di auto-verifica per l'attività che si occuperà della Dynamic Link, impostando l'host di dominio dinamico link del tuo progetto come trovato 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>

Si noti che l' android:host deve essere impostato al dominio dinamico collegamenti, e non il dominio del profondo legame.

Tutti autoVerify filtri intenti nel manifesto devono essere registrati in modo App Link di impegnarsi. Maniglie Firebase questa azione per tutti i domini dinamici collegamenti, ma è possibile controllare questo aprendo assetlinks.json file ospitato sul tuo dominio dinamico Links:

https://YOUR_DOMAIN/.well-known/assetlinks.json
Tutti nomi di pacchetti tue app Firebase dovrebbe essere inclusa.

I collegamenti dinamici verranno ora inviati direttamente alla tua app. Sarete in grado di ottenere il profondo legame e altri dati Dynamic Link chiamando getDynamicLink() in attività si è aggiunto il filtro intento App Collegamento ai (come descritto nel gestire i link profondi ).

Nota: Dal momento che invoca attraverso App Link porta l'utente direttamente alla app, un collegamento dinamico non può onorare la versione minima richiesta. Quindi una volta che l'applicazione è aperta, è necessario confrontare la versione minima del collegamento dinamico ( getminimumappversion ) contro PackageInfo.versionCode e reindirizzare l'utente di aggiornare l'applicazione se necessario utilizzando getUpdateAppIntent .