Firebase Dynamic Links auf Android erhalten

Damit Sie die Firebase Dynamic Links erhalten, die Sie erstellt haben, müssen Sie das Dynamic Links SDK in Ihre App einbinden und die Methode FirebaseDynamicLinks.getDynamicLink() aufrufen, wenn Ihre App geladen wird, um die in der Dynamic Link übergebenen Daten abzurufen.

  1. Fügen Sie Ihrem Android-Projekt Firebase hinzu, falls noch nicht geschehen.

    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. Fügen Sie in der Gradle-Datei Ihres Moduls (auf App-Ebene) (in der Regel <project>/<app-module>/build.gradle.kts oder <project>/<app-module>/build.gradle) die Abhängigkeit für die Dynamic Links-Bibliothek für Android hinzu. Wir empfehlen, die Firebase Android BoM zu verwenden, um die Versionsverwaltung der Bibliothek zu steuern.

    Für eine optimale Nutzung von Dynamic Links empfehlen wir, Google Analytics in Ihrem Firebase-Projekt zu aktivieren und das Firebase SDK für Google Analytics in Ihre App einzubinden.

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

    Mit der Firebase Android BoM haben Sie immer eine kompatible Version der Firebase Android-Bibliotheken in Ihrer App.

    (Alternative)  Firebase-Bibliotheksabhängigkeiten ohne Verwendung von BoM hinzufügen

    Wenn Sie die Firebase BoM nicht verwenden möchten, müssen Sie jede Firebase-Bibliotheksversion in der entsprechenden Abhängigkeitszeile angeben.

    Wenn Sie mehrere Firebase-Bibliotheken in Ihrer App verwenden, empfehlen wir dringend, die BoM zum Verwalten von Bibliotheksversionen zu verwenden, um sicherzustellen, dass alle Versionen kompatibel sind.

    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:23.0.0'
    }
  3. Öffnen Sie in der Firebase Console den Bereich Dynamic Links. Akzeptieren Sie die Nutzungsbedingungen, wenn Sie dazu aufgefordert werden.

Wie bei einfachen Deeplinks müssen Sie der Aktivität, die Deeplinks für Ihre App verarbeitet, einen neuen Intent-Filter hinzufügen. Der Intent-Filter sollte Deeplinks Ihrer Domain abfangen, da die Dynamic Link zu Ihrer Domain weiterleitet, wenn Ihre App installiert ist. Dies ist erforderlich, damit Ihre App die Dynamic Link-Daten empfangen kann, nachdem sie über den Play Store installiert/aktualisiert wurde und der Nutzer auf die Schaltfläche „Weiter“ tippt. 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 Nutzer eine Dynamic Link mit einem Deeplink zum von Ihnen angegebenen Schema und Host öffnen, startet Ihre App die Aktivität mit diesem Intent-Filter, um den Link zu verarbeiten.

Rufen Sie die Methode getDynamicLink() auf, um den Deeplink zu erhalten:

Kotlin

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

Sie müssen getDynamicLink() in jeder Aktivität aufrufen, die möglicherweise über den Link gestartet wird, auch wenn der Link über getIntent().getData() im Intent verfügbar ist. Beim Aufrufen von getDynamicLink() wird der Link abgerufen und diese Daten werden gelöscht, damit sie nur einmal von Ihrer App verarbeitet werden.

Normalerweise rufen Sie getDynamicLink() in der Hauptaktivität sowie in allen Aktivitäten auf, die über Intent-Filter gestartet werden, die mit dem Link übereinstimmen.

Analysen für Aufnahmen

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

  • dynamic_link_app_open
  • dynamic_link_first_open
  • dynamic_link_app_update

Damit diese Ereignisse registriert werden, müssen Sie Google Analytics konfigurieren, bevor Sie den Deeplink abrufen. Prüfen Sie, ob die folgenden Bedingungen erfüllt sind:

  • Rufen Sie FirebaseDynamicLinks.getDynamicLink() in den Einstiegspunkten Ihrer App auf:
    • Launcher-Aktivitäten, z. B.: action="android.intent.action.MAIN", category="android.intent.category.LAUNCHER".
    • Aktivitätseinstiegspunkte, z. B.: onStart(), onCreate().
    • Deeplink-Aktivitäten
  • Google Analytics einrichten und verwenden:

Unter Android 6.0 (API-Level 23) und höher können Sie Ihre App so einrichten, dass Dynamic Links direkt verarbeitet wird, wenn Ihre App bereits installiert ist. Verwenden Sie dazu Android App Links.

Achten Sie darauf, dass Sie den SHA256-Zertifikatsfingerabdruck für Ihre App in Ihrem Projekt in der Firebase-Konsole hinzugefügt haben. Dynamic Links übernimmt die Einrichtung der App-Links-Websiteverknüpfung für Ihre Dynamic Links-Domain.

Fügen Sie der Aktivität, die den Dynamic Link-Link verarbeitet, einen automatisch bestätigten Intent-Filter hinzu und legen Sie den Host auf die Dynamic Links-Domain Ihres Projekts fest, die in der Firebase-Konsole zu finden ist. In der 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>

Der android:host-Parameter muss auf Ihre Dynamic Links-Domain und nicht auf die Domain Ihres Deeplinks festgelegt sein.

Alle autoVerify-Intent-Filter in Ihrem Manifest müssen registriert sein, damit App-Links funktionieren. Firebase übernimmt dies automatisch für Ihre Dynamic Links-Domains. Sie können dies jedoch überprüfen, indem Sie die assetlinks.json-Datei öffnen, die auf Ihrer Dynamic Links-Domain gehostet wird:

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

Dynamic Links wird jetzt direkt an Ihre App gesendet. Sie können den Deeplink und andere Dynamic Link-Daten abrufen, indem Sie getDynamicLink() in der Aktivität aufrufen, der Sie den Intent-Filter für App-Links hinzugefügt haben (wie unter Deeplinks verarbeiten beschrieben).

Hinweis:Da Nutzer beim Aufrufen über App-Links direkt zur App weitergeleitet werden, kann ein Dynamic Link die erforderliche Mindestversion nicht berücksichtigen. Sobald die App geöffnet wird, müssen Sie also die Mindestversion des dynamischen Links ( getminimumappversion) mit PackageInfo.versionCode vergleichen und den Nutzer bei Bedarf mit getUpdateAppIntent zum Upgrade der App weiterleiten.