Pobieranie Linków dynamicznych Firebase na Androida

Aby otrzymać Firebase Dynamic Links, który został przez Ciebie utworzony, musisz dołączyć do aplikacji pakiet SDK Dynamic Links i wywołać metodę FirebaseDynamicLinks.getDynamicLink() podczas ładowania aplikacji, aby uzyskać dane przekazane w Dynamic Link.

  1. Dodaj Firebase do projektu aplikacji na Androida, jeśli nie korzystasz w nim jeszcze z tej usługi.

    Podczas rejestrowania aplikacji podaj klucz podpisywania SHA-1. Jeśli używasz linków do aplikacji, podaj też klucz SHA-256.

  2. W pliku Gradle modułu (na poziomie aplikacji) (zwykle <project>/<app-module>/build.gradle.kts lub <project>/<app-module>/build.gradle) dodaj zależność z biblioteką Dynamic Links na Androida. Zalecamy używanie Firebase Android BoM do kontrolowania obsługi wersji biblioteki.

    Aby zapewnić optymalne działanie usługi Dynamic Links, zalecamy włączenie Google Analytics w projekcie w Firebase i dodanie do aplikacji pakietu SDK Firebase dla Google Analytics.

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

    Gdy korzystasz z Firebase Android BoM, aplikacja zawsze używa zgodnych wersji bibliotek Firebase na Androida.

    (Alternatywa)  Dodaj zależności biblioteki Firebase bez używania BoM

    Jeśli nie zdecydujesz się na użycie Firebase BoM, musisz określić każdą wersję biblioteki Firebase w jej wierszu zależności.

    Jeśli w aplikacji używasz kilku bibliotek Firebase, zdecydowanie zalecamy korzystanie z BoM do zarządzania wersjami bibliotek, co zapewni zgodność wszystkich wersji.

    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:24.0.0'
    }
  3. W konsoli Firebase otwórz sekcję Dynamic Links. Zaakceptuj warunki korzystania z usługi, jeśli pojawi się taka prośba.

Podobnie jak w przypadku zwykłych precyzyjnych linków, musisz dodać nowy filtr intencji do aktywności, która obsługuje precyzyjne linki w aplikacji. Filtr intencji powinien przechwytywać precyzyjne linki Twojej domeny, ponieważ Dynamic Link przekieruje do Twojej domeny, jeśli aplikacja jest zainstalowana. Jest to wymagane, aby aplikacja mogła otrzymać dane Dynamic Link po zainstalowaniu lub zaktualizowaniu ze Sklepu Play i kliknięciu przycisku Dalej. W 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>

Gdy użytkownicy otworzą Dynamic Link z precyzyjnym linkiem do określonego przez Ciebie schematu i hosta, Twoja aplikacja rozpocznie działanie z tym filtrem intencji, aby obsłużyć link.

Aby otrzymać precyzyjny link, wywołaj metodę getDynamicLink():

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

Musisz wywołać getDynamicLink() w każdej aktywności, która może zostać uruchomiona przez link, nawet jeśli link może być dostępny z intencji za pomocą getIntent().getData(). Wywołanie metody getDynamicLink() pobiera link i usuwa te dane, dzięki czemu są one przetwarzane przez aplikację tylko raz.

Zwykle wywołujesz getDynamicLink() w głównej aktywności, a także we wszystkich aktywnościach uruchamianych przez filtry intencji, które pasują do linku.

Statystyki nagrań

Te zdarzenia mogą być automatycznie śledzone w Google Analytics i wyświetlane w konsoli Firebase.

  • dynamic_link_app_open
  • dynamic_link_first_open
  • dynamic_link_app_update

Aby rejestrować te zdarzenia, musisz skonfigurować Google Analytics, zanim pobierzesz precyzyjny link. Sprawdź, czy spełnione są te warunki:

  • Wywołaj FirebaseDynamicLinks.getDynamicLink() w punktach wejścia aplikacji:
    • Aktywności w Menu z aplikacjami, np.: action="android.intent.action.MAIN", category="android.intent.category.LAUNCHER".
    • Punkty wejścia aktywności, np.: onStart(), onCreate().
    • Aktywności związane z precyzyjnymi linkami.
  • Konfigurowanie i używanie Google Analytics:
    • Uwzględnij zależność Google Analytics. Zwykle jest on dodawany automatycznie przez wtyczkę Gradle google-services.
    • Dołącz plik konfiguracji google-services.json do aplikacji.
    • Zadzwoń do: FirebaseAnalytics.getInstance(), zanim zadzwonisz do: FirebaseDynamicLinks.getDynamicLink().

Na Androidzie 6.0 (poziom interfejsu API 23) lub nowszym możesz skonfigurować aplikację tak, aby obsługiwała Dynamic Links bezpośrednio, gdy jest już zainstalowana, za pomocą linków do aplikacji na Androida.

Upewnij się, że odcisk cyfrowy certyfikatu SHA256 aplikacji został dodany do projektu w konsoli Firebase. Dynamic Links zajmie się skonfigurowaniem powiązania witryny z linkami aplikacji w domenie Dynamic Links.

Dodaj automatycznie zweryfikowany filtr intencji do aktywności, która będzie obsługiwać Dynamic Link, ustawiając hosta na domenę Dynamic Links projektu, którą znajdziesz w konsoli Firebase. W: 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>

Pamiętaj, że parametr android:host musi być ustawiony na domenę Dynamic Links, a nie na domenę precyzyjnego linku.

Aby linki do aplikacji działały, musisz zarejestrować wszystkie filtry intencji autoVerify w pliku manifestu. Firebase obsługuje to automatycznie w przypadku domen Dynamic Links, ale możesz to sprawdzić, otwierając plik assetlinks.json hostowany w domenie Dynamic Links:

https://YOUR_DOMAIN/.well-known/assetlinks.json
Powinny być uwzględnione nazwy pakietów wszystkich aplikacji w Firebase.

Dynamic Links będzie teraz wysyłany bezpośrednio do Twojej aplikacji. Możesz uzyskać precyzyjny link i inne dane Dynamic Link, wywołując getDynamicLink() w aktywności, do której dodano filtr intencji linków do aplikacji (zgodnie z opisem w sekcji Obsługa precyzyjnych linków).

Uwaga: ponieważ wywołanie za pomocą linków aplikacji przenosi użytkownika bezpośrednio do aplikacji, link dynamiczny nie może uwzględniać wymaganej wersji minimalnej. Po otwarciu aplikacji musisz porównać minimalną wersję linku dynamicznego ( getminimumappversion) z  PackageInfo.versionCode i w razie potrzeby przekierować użytkownika do uaktualnienia aplikacji za pomocą getUpdateAppIntent.