Catch up on highlights from Firebase at Google I/O 2023. Learn more

Empfangen Sie dynamische Firebase-Links auf Android

Um die von Ihnen erstellten dynamischen Firebase-Links zu erhalten, müssen Sie das SDK für dynamische Links in Ihre App einschließen und die FirebaseDynamicLinks.getDynamicLink() Methode aufrufen, wenn Ihre App geladen wird, um die Daten abzurufen, die im dynamischen Link übergeben werden.

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

    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 ) die Abhängigkeit für die Dynamic Links Android-Bibliothek hinzu. 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 Ihrer App das Firebase SDK für Google Analytics hinzuzufügen.

    Kotlin+KTX

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

    Durch die Verwendung der Firebase Android BoM verwendet Ihre App immer kompatible Versionen von 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, dass wir bei Verwendung mehrerer Firebase-Bibliotheken in Ihrer App dringend empfehlen, die BoM zum Verwalten von Bibliotheksversionen zu verwenden, wodurch sichergestellt wird, 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-ktx:21.1.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:21.3.0'
    }
    

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:32.1.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 von 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, dass wir bei Verwendung mehrerer Firebase-Bibliotheken in Ihrer App dringend empfehlen, die BoM zum Verwalten von Bibliotheksversionen zu verwenden, wodurch sichergestellt wird, 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.1.0'
        implementation 'com.google.firebase:firebase-analytics:21.3.0'
    }
    
  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 Intent-Filter hinzufügen. 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 wurde und man 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 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 Absichtsfilter, 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 möglicherweise durch den Link gestartet wird, auch wenn der Link möglicherweise von der Absicht mithilfe von getIntent().getData() verfügbar ist. Der Aufruf von getDynamicLink() ruft den Link ab und löscht diese Daten, sodass sie nur einmal von Ihrer App 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.

Analytik aufzeichnen

Die folgenden Ereignisse können automatisch in Google Analytics 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 verwenden:
    • Schließen Sie die Google Analytics-Abhängigkeit ein. Dies wird normalerweise automatisch vom Gradle-Plug-in der google-services hinzugefügt.
    • Binden 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 Fingerabdruck des SHA256-Zertifikats für Ihre App zu Ihrem Projekt in der Firebase-Konsole hinzugefügt haben. Dynamic Links übernimmt die Einrichtung der App-Links-Websitezuordnung für Ihre Dynamic Links-Domain.

Fügen Sie der Aktivität einen automatisch bestätigten Absichtsfilter hinzu, der den dynamischen Link verarbeitet, und legen Sie den Host auf die Domäne der dynamischen Links 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 Domäne für dynamische Links 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 können. Firebase handhabt dies automatisch für Ihre Domains mit dynamischen Links, aber Sie können dies überprüfen, indem Sie die Datei assetlinks.json öffnen, die auf Ihrer Domain mit dynamischen Links gehostet wird:

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

Dynamische Links werden jetzt direkt an Ihre App gesendet. Sie können den Deep-Link und andere dynamische 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 Aufruf über App-Links den Benutzer direkt zur App führt, kann ein dynamischer Link die erforderliche Mindestversion nicht berücksichtigen. Sobald die App geöffnet ist, müssen Sie also die Mindestversion des dynamischen Links ( getminimumappversion ) mit PackageInfo.versionCode vergleichen und den Benutzer umleiten, um die App bei Bedarf mit getUpdateAppIntent zu aktualisieren.