Pobieranie Linków dynamicznych Firebase na Androida

Aby otrzymać utworzone przez siebie Linki dynamiczne Firebase, musisz umieścić w aplikacji pakiet SDK Linków dynamicznych i wywołać metodę FirebaseDynamicLinks.getDynamicLink() podczas wczytywania aplikacji w celu pobrania danych przekazywanych w linku dynamicznym.

  1. Dodaj Firebase do swojego projektu Android, chyba że masz to już za sobą.

    Podczas rejestracji aplikacji podaj klucz podpisywania SHA-1. Jeśli korzystasz z linków aplikacji, podaj też klucz SHA-256.

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

    Aby zapewnić optymalne działanie Linków dynamicznych, włącz Google Analytics w projekcie Firebase i dodaj do aplikacji pakiet SDK Firebase dla Google Analytics.

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

    Dzięki użyciu BoM Firebase Android BoM Twoja aplikacja zawsze używa zgodnych wersji bibliotek Firebase na Androida.

    (Alternatywnie) Dodawanie zależności bibliotek Firebase bez korzystania z BM

    Jeśli nie chcesz używać Firebase BoM, musisz określić każdą wersję biblioteki Firebase w wierszu zależności.

    Pamiętaj, że jeśli w swojej aplikacji używasz wielu bibliotek Firebase, zdecydowanie zalecamy korzystanie z BoM do zarządzania wersjami bibliotek. Dzięki temu będziesz mieć pewność, że wszystkie wersje są zgodne.

    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:22.0.1'
    }
    
    Szukasz modułu biblioteki korzystającego z usługi Kotlin? Od października 2023 r. (Firebase BoM 32.5.0) zarówno deweloperzy aplikacji Kotlin, jak i języki Java mogą korzystać z modułu biblioteki głównej (więcej informacji znajdziesz w odpowiedziach na najczęstsze pytania o tę inicjatywę).
  3. W konsoli Firebase otwórz sekcję Połączenia dynamiczne. Jeśli pojawi się taka prośba, zaakceptuj warunki korzystania z usługi.

Tak jak w przypadku zwykłych precyzyjnych linków, do działania, które obsługuje precyzyjne linki w aplikacji, musisz dodać nowy filtr intencji. Filtr intencji powinien wychwytywać precyzyjne linki w Twojej domenie, ponieważ po zainstalowaniu aplikacji link dynamiczny przekierowuje do Twojej domeny. Jest to wymagane, aby aplikacja otrzymała dane linku dynamicznego po jej zainstalowaniu lub zaktualizowaniu ze Sklepu Play i kliknięciem przycisku Dalej. W aplikacji 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ą link dynamiczny z precyzyjnym linkiem do określonego przez Ciebie schematu i hosta, aplikacja rozpocznie działanie z tym filtrem intencji w celu obsługi linku.

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

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

W przypadku każdego działania, które może uruchomić link, musisz wywołać metodę getDynamicLink(), nawet jeśli link może być dostępny z intencji przy użyciu metody getIntent().getData(). Wywołanie getDynamicLink() powoduje pobranie linku i usunięcie danych, dzięki czemu aplikacja może je przetworzyć tylko raz.

Zwykle wywołujesz funkcję getDynamicLink() w głównym działaniu oraz w innych działaniach uruchamianych przez filtry intencji, które pasują do linku.

Rejestrowanie statystyk

Poniższe 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 zarejestrować te zdarzenia, musisz skonfigurować Google Analytics przed pobraniem precyzyjnego linku. Sprawdź, czy są spełnione te warunki:

  • Wywołaj FirebaseDynamicLinks.getDynamicLink() w punktach wejścia aplikacji:
    • Działania 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 z precyzyjnymi linkami.
  • Skonfiguruj i używaj Google Analytics:
    • Uwzględnij zależność Google Analytics. Jest on zwykle dodawany automatycznie przez wtyczkę google-services do Gradle.
    • Umieść plik konfiguracyjny google-services.json w swojej aplikacji.
    • Zanim zadzwonisz pod numer FirebaseDynamicLinks.getDynamicLink(), zadzwoń pod numer FirebaseAnalytics.getInstance().

W Androidzie 6.0 (poziom interfejsu API 23) i nowszych możesz skonfigurować aplikację tak, aby obsługiwała linki dynamiczne bezpośrednio, gdy jest już zainstalowana, za pomocą linków aplikacji na Androida.

Upewnij się, że w konsoli Firebase został dodany odcisk cyfrowy certyfikatu SHA256 swojej aplikacji. Linki dynamiczne skonfigurują powiązanie witryny z linkami aplikacji dla Twojej domeny linków dynamicznych.

Dodaj filtr intencji z automatyczną weryfikacją do aktywności, która będzie obsługiwać link dynamiczny, ustawiając hosta na domenę Linków dynamicznych projektu znajdziesz ją 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 w polu android:host należy ustawić domenę linków dynamicznych, a nie domenę precyzyjnego linku.

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

https://YOUR_DOMAIN/.well-known/assetlinks.json
Należy uwzględnić wszystkie nazwy pakietów aplikacji Firebase.

Linki dynamiczne będą teraz wysyłane bezpośrednio do Twojej aplikacji. Aby uzyskać precyzyjny link i inne dane linków dynamicznych, wywołaj funkcję getDynamicLink() w aktywności, do której został dodany filtr intencji linków aplikacji (jak opisano w sekcji Obsługa precyzyjnych linków).

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