Erhalten Sie dynamische Firebase-Links auf Android

Um die von Ihnen erstellten dynamischen Firebase-Links zu erhalten, müssen Sie das Dynamic Links SDK in Ihre App einbinden und beim Laden Ihrer App die Methode FirebaseDynamicLinks.getDynamicLink() aufrufen, um die im dynamischen Link übergebenen Daten abzurufen.

  1. Falls noch nicht geschehen, fügen Sie Firebase zu Ihrem Android-Projekt hinzu .

    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 Ihrer Modul-Gradle-Datei (auf App-Ebene) (normalerweise <project>/<app-module>/build.gradle.kts oder <project>/<app-module>/build.gradle ) die Abhängigkeit für die dynamischen Links hinzu Bibliothek für Android. Wir empfehlen die Verwendung der Firebase Android BoM zur Steuerung der Bibliotheksversionierung.

    Für ein optimales Erlebnis mit dynamischen Links empfehlen wir, Google Analytics in Ihrem Firebase-Projekt zu aktivieren und das Firebase SDK für Google Analytics zu Ihrer App hinzuzufügen.

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

    Durch die Verwendung der Firebase Android BoM verwendet Ihre App immer kompatible Versionen der Firebase Android-Bibliotheken.

    (Alternative) Fügen Sie Firebase-Bibliotheksabhängigkeiten hinzu , ohne die Stückliste zu verwenden

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

    Beachten Sie: Wenn Sie mehrere Firebase-Bibliotheken in Ihrer App verwenden, empfehlen wir dringend, die BoM zum Verwalten der 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:21.2.0'
        implementation 'com.google.firebase:firebase-analytics:21.6.1'
    }
    
    Suchen Sie nach einem Kotlin-spezifischen Bibliotheksmodul? Ab Oktober 2023 (Firebase BoM 32.5.0) können sich sowohl Kotlin- als auch Java-Entwickler auf das Hauptbibliotheksmodul verlassen (Einzelheiten finden Sie in den FAQ zu dieser Initiative ).
  3. Öffnen Sie in der Firebase-Konsole den Abschnitt „Dynamische Links“ . Akzeptieren Sie die Nutzungsbedingungen, wenn Sie dazu aufgefordert werden.

Wie bei einfachen Deep-Links müssen Sie der Aktivität, die Deep-Links für Ihre App verarbeitet, einen neuen Absichtsfilter hinzufügen. Der Absichtsfilter sollte Deep-Links Ihrer Domain abfangen, da der dynamische Link zu Ihrer Domain weiterleitet, wenn Ihre App installiert ist. Dies ist erforderlich, damit Ihre App die Dynamic Link-Daten empfängt, nachdem sie im Play Store installiert/aktualisiert wurde und auf die Schaltfläche „Weiter“ getippt 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 den Deep Link zu erhalten, rufen Sie die Methode getDynamicLink() auf:

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

Sie müssen getDynamicLink() in jeder Aktivität aufrufen, die durch den Link gestartet werden könnte, auch wenn der Link möglicherweise über die Absicht mit getIntent().getData() verfügbar ist. Der Aufruf von getDynamicLink() ruft den Link ab und löscht diese Daten, sodass sie von Ihrer App nur einmal verarbeitet werden.

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

Zeichnen Sie Analysen auf

Die folgenden Ereignisse können in Google Analytics automatisch verfolgt 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 Ihren App-Einstiegspunkten auf:
    • 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.
  • Google Analytics einrichten und nutzen:
    • Beziehen Sie die Google Analytics-Abhängigkeit ein. Dies wird normalerweise automatisch vom google-services Gradle-Plugin hinzugefügt.
    • Fügen Sie die Konfigurationsdatei google-services.json in Ihre App ein.
    • Rufen Sie FirebaseAnalytics.getInstance() auf, bevor Sie FirebaseDynamicLinks.getDynamicLink() aufrufen.

Unter Android 6.0 (API-Level 23) und höher können Sie Ihre App so einrichten, dass sie dynamische Links direkt verarbeitet, wenn Ihre App bereits installiert ist, indem Sie Android App Links verwenden.

Stellen Sie sicher, dass Sie den SHA256-Zertifikat-Fingerabdruck für Ihre App zu Ihrem Projekt in der Firebase-Konsole hinzugefügt haben. Dynamic Links kümmert sich um die Einrichtung der App Links-Website-Zuordnung für Ihre Dynamic Links-Domäne.

Fügen Sie der Aktivität einen automatisch verifizierten Absichtsfilter hinzu, der den dynamischen Link verarbeitet, und legen Sie den Host auf die Dynamic-Links-Domäne Ihres Projekts fest, wie sie 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>

Beachten Sie, dass android:host auf Ihre Dynamic Links-Domäne eingestellt sein muss und nicht auf die Domäne Ihres Deep Links.

Alle autoVerify Absichtsfilter in Ihrem Manifest müssen registriert sein, damit App-Links aktiviert werden. Firebase verarbeitet dies automatisch für Ihre Dynamic Links-Domänen. Sie können dies jedoch überprüfen, indem Sie die Datei assetlinks.json öffnen, die auf Ihrer Dynamic Links-Domäne gehostet wird:

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

Dynamische Links werden nun direkt an Ihre App gesendet. Sie können den Deep-Link und andere Dynamic-Link-Daten abrufen, indem Sie getDynamicLink() in der Aktivität aufrufen, der Sie den App-Links-Intent-Filter hinzugefügt haben (wie unter Umgang mit Deep-Links beschrieben).

Hinweis: Da der Benutzer beim Aufruf über App-Links direkt zur App gelangt, kann ein dynamischer Link die erforderliche Mindestversion nicht berücksichtigen. Sobald die App geöffnet ist, müssen Sie also die Mindestversion des Dynamic Links ( getminimumappversion ) mit PackageInfo.versionCode vergleichen und den Benutzer bei Bedarf mithilfe von getUpdateAppIntent zum Aktualisieren der App umleiten.