Erhalten Sie dynamische Firebase-Links auf Android

Um die Firebase dynamischen Links zu erhalten , dass Ihr erstellt , müssen Sie die dynamischen Links SDK in Ihrer App enthalten und die Anruf FirebaseDynamicLinks.getDynamicLink() Methode , wenn Ihre Anwendung lädt die Daten in dem Dynamic Link übergeben zu bekommen.

  1. Wenn Sie nicht bereits haben, fügen Sie Firebase zu dem Android - Projekt .

    Geben Sie bei der Registrierung Ihrer App Ihren SHA-1-Signaturschlüssel an. Wenn Sie App Links verwenden, geben Sie auch Ihren SHA-256-Schlüssel an.

  2. Mit Hilfe der Firebase Android BoM , erklärt die Abhängigkeit für die dynamischen Links Android - Bibliothek in Ihrem Modul (app-Ebene) Gradle Datei ( in der Regel app/build.gradle ).

    Für eine optimale Erfahrung mit dynamischen Verbindungen, empfehlen wir Google Analytics ermöglicht in Ihrem Firebase - Projekt und das Hinzufügen des Firebase SDK für Google Analytics in Ihrer App.

    Java

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

    Durch die Verwendung des Firebase Android BoM werden, Ihre App immer kompatible Versionen der Firebase Android - Bibliotheken verwenden.

    (Alternative) Deklarieren Firebase Bibliothek Abhängigkeiten , ohne die BoM mit

    Wenn Sie die Firebase-Stückliste nicht verwenden möchten, müssen Sie jede Firebase-Bibliotheksversion in ihrer Abhängigkeitszeile angeben.

    Beachten Sie, dass , wenn Sie mehrere Firebase Bibliotheken in Ihrer Anwendung verwenden wir mit der BoM empfehlen Bibliothek Versionen zu verwalten, die sicherstellt , dass alle Versionen kompatibel sind.

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

    Durch die Verwendung des Firebase Android BoM werden, Ihre App immer kompatible Versionen der Firebase Android - Bibliotheken verwenden.

    (Alternative) Deklarieren Firebase Bibliothek Abhängigkeiten , ohne die BoM mit

    Wenn Sie die Firebase-Stückliste nicht verwenden möchten, müssen Sie jede Firebase-Bibliotheksversion in ihrer Abhängigkeitszeile angeben.

    Beachten Sie, dass , wenn Sie mehrere Firebase Bibliotheken in Ihrer Anwendung verwenden wir mit der BoM empfehlen Bibliothek Versionen zu verwalten, die sicherstellt , dass alle Versionen kompatibel sind.

    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. In der Firebase Konsole öffnet Abschnitt des dynamischen Links. Akzeptieren Sie die Nutzungsbedingungen, wenn Sie dazu aufgefordert werden.

Wie bei Normal Deep - Links , müssen Sie einen neuen Intent - Filter auf die Aktivität hinzufügen , die Deep - Links für Ihre Anwendung behandelt. Der Intent-Filter sollte Deep-Links Ihrer Domain erfassen, da der dynamische Link auf Ihre Domain umleitet, wenn Ihre App installiert ist. Dies ist erforderlich, damit Ihre App die Dynamic Link-Daten erhält, nachdem sie aus dem Play Store installiert/aktualisiert und auf die Schaltfläche Weiter geklickt wurde. 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>

Wenn Benutzer einen dynamischen Link mit einem Deep-Link zu dem von Ihnen angegebenen Schema und Host öffnen, startet Ihre App die Aktivität mit diesem Intent-Filter, um den Link zu verarbeiten.

Um die tiefe Verbindung zu erhalten, rufen Sie das getDynamicLink() Methode:

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

Sie müssen rufen getDynamicLink() in jeder Aktivität , die durch den Link gestartet werden könnte, auch wenn die Verbindung von der Absicht Verwendung verfügbar sein könnte getIntent().getData() . Der Aufruf getDynamicLink() ruft den Link und löscht die Daten , so dass es nur einmal durch Ihre Anwendung verarbeitet wird.

Sie rufen normalerweise getDynamicLink() in der Haupttätigkeit sowie alle durch Vorsatz Filter gestartet Aktivitäten , die den Link anzeigen lassen.

Datensatzanalysen

Die folgenden Ereignisse können in Google Analytics automatisch nachverfolgt und in der Firebase-Konsole angezeigt werden.

  • dynamic_link_app_open
  • dynamic_link_first_open
  • dynamic_link_app_update

Um diese Ereignisse zu registrieren, müssen Sie Google Analytics konfigurieren, bevor Sie den Deep-Link abrufen. Überprüfen Sie, ob die folgenden Bedingungen erfüllt sind:

  • Rufen Sie FirebaseDynamicLinks.getDynamicLink() in Ihrer Anwendung Einspeisepunkte:
    • Launcher-Aktivitäten. zB: action="android.intent.action.MAIN" , category="android.intent.category.LAUNCHER" .
    • Einstiegspunkte für Aktivitäten. zB: onStart() , onCreate() .
    • Deep-Link-Aktivitäten.
  • Einrichten und Verwenden von Google Analytics:
    • Beziehen Sie die Google Analytics-Abhängigkeit ein. Dies wird in der Regel durch die automatisch hinzugefügt google-services Gradle Plugin.
    • Fügen Sie die google-services.json config - Datei in Ihrer Anwendung.
    • Rufen Sie FirebaseAnalytics.getInstance() vor dem Aufruf FirebaseDynamicLinks.getDynamicLink() .

Auf Android 6.0 (API - Ebene 23) und höher, können Sie Ihre App einrichten, um dynamische Links direkt bei Ihrer Anwendung behandeln bereits unter Verwendung installiert ist Android App Verbindungen .

Stellen Sie sicher , dass Sie das SHA256 Zertifikat Fingerabdruck für Ihre Anwendung in Ihr Projekt in der hinzugefügt Firebase Konsole . Dynamic Links übernimmt die Einrichtung der App Links-Website-Verknüpfung für Ihre Dynamic Links-Domain.

Fügen Sie ein Auto-prüft Intent - Filter auf die Aktivität, die das Dynamic Link behandelt, die Einstellung der Host auf Ihre Projekt Domain Dynamische Verbindungen wie in der Firebase Konsole gefunden . Im 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>

Beachten Sie, dass der android:host - android:host muss auf Ihre dynamischen Link Domain festgelegt werden, und nicht mit der Domain des Deep - Link.

Alles autoVerify Absicht Filter in Ihrem Manifest muss für App Verbindungen registriert sein , um zu engagieren. Firebase übernimmt diese automatisch für Ihre dynamische Links Domains, aber Sie können dies überprüfen , indem die Öffnung assetlinks.json Datei gehostet auf dynamische Links Domain:

https://YOUR_DOMAIN/.well-known/assetlinks.json
Alle Ihre apps Firebase Paketnamen enthalten sein sollten.

Dynamische Links werden jetzt direkt an Ihre App gesendet. Sie werden in der Lage , den Deep - Link und andere Dynamic Link - Daten zu erhalten durch den Aufruf getDynamicLink() in der Aktivität hinzugefügt Sie die App Verbindungen Intent - Filter auf (wie in beschrieben Griff Deep - Links ).

Hinweis: Da rufenden durch App Verbindungen führt den Benutzer direkt auf die App, ein Dynamic Link kann die erforderliche Mindestversion nicht ehren. Also , wenn die App geöffnet ist, müssen Sie die Dynamic Link-Minimalversion (zum Vergleich getminimumappversion ) gegen PackageInfo.versionCode und den Benutzer umleiten die App zu aktualisieren , wenn verwendet erforderlich getUpdateAppIntent .