Pobieranie Linków dynamicznych Firebase na Androida

Aby odebrać utworzony przez siebie Firebase Dynamic Links, musisz umieścić w aplikacji pakiet SDK Dynamic Links i wywołać metodę FirebaseDynamicLinks.getDynamicLink() podczas wczytywania aplikacji w celu pobrania danych przekazywanych w Dynamic Link.

  1. Jeśli jeszcze tego nie zrobiono, dodaj Firebase do projektu na Androida.

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

  2. W pliku Gradle (na poziomie modułu) 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. Do kontrolowania obsługi wersji biblioteki zalecamy używanie Firebase Android BoM.

    Aby zapewnić optymalne działanie usługi Dynamic Links, 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.5.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'
    }

    Dzięki użyciu Firebase Android BoMaplikacja zawsze będzie używać zgodnych wersji bibliotek Firebase na Androida.

    (Alternatywnie) Dodaj zależności bibliotek Firebase bez korzystania z BoM

    Jeśli zdecydujesz się nie używać obiektu 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.1.2'
    }
    Szukasz modułu biblioteki Kotlin? Od października 2023 r. (Firebase BoM 32.5.0) deweloperzy Kotlina i Java mogą korzystać z głównego modułu biblioteki (szczegółowe informacje znajdziesz w często zadawanych pytaniach dotyczących tej inicjatywy).
  3. W konsoli Firebase otwórz sekcję Dynamic Links. 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 Twojej aplikacji, musisz dodać nowy filtr intencji. Filtr intencji powinien wychwytywać precyzyjne linki w Twojej domenie, ponieważ po zainstalowaniu aplikacji Dynamic Link przekierowuje do Twojej domeny. Jest to wymagane, aby Twoja aplikacja mogła otrzymywać 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 schematu i hosta, aplikacja uruchomi działanie z tym filtrem intencji, aby obsłużyć link.

Aby uzyskać 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);
            }
        });

Funkcję getDynamicLink() musisz wywołać w przypadku każdej aktywności, która może zostać uruchomiona przez link, nawet jeśli link jest dostępny z intencji za pomocą getIntent().getData(). Wywołanie funkcji getDynamicLink() odwołuje połączenie i wyczyści te dane, aby aplikacja przetwarzała je 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.

Statystyki nagrywania

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 funkcję FirebaseDynamicLinks.getDynamicLink() w punktach wejścia do aplikacji:
    • Działania w Menu z aplikacjami, np.: action="android.intent.action.MAIN", category="android.intent.category.LAUNCHER".
    • Punkty wejścia do aktywności, np. onStart(), onCreate().
    • Aktywności z precyzyjnymi linkami.
  • Konfigurowanie i używanie usługi Google Analytics:

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

Upewnij się, że dodasz odciski cyfrowe certyfikatu SHA-256 swojej aplikacji do projektu w konsoli Firebase. Dynamic Links skonfiguruje powiązanie witryny z usługą Linki do aplikacji w domenie Dynamic Links.

Dodaj do aktywności, która będzie obsługiwać Dynamic Link, filtr intencji z automatyczną weryfikacją, ustawiając hosta na domenę Dynamic Links projektu, jak wyświetla się 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 wartość android:host musi być ustawiona na domenę Dynamic Links, a nie na domenę precyzyjnego linku.

Aby umożliwić działanie funkcji Linki do zaangażowania w aplikacji, w manifeście muszą być zarejestrowane wszystkie filtry intencji autoVerify. Firebase obsługuje to automatycznie w przypadku Twoich domen Dynamic Links, ale możesz to sprawdzić, otwierając plik assetlinks.json hostowany w Twojej domenie Dynamic Links:

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

Dynamic Links będzie teraz wysyłany bezpośrednio do Twojej aplikacji. Będziesz mieć dostęp do precyzyjnego linku i innych danych Dynamic Link, wywołując 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 za pomocą linków do aplikacji przekierowuje użytkownika bezpośrednio do aplikacji, więc Dynamic Link nie może uwzględniać wymaganej minimalnej wersji. Gdy otworzysz aplikację, 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 metody getUpdateAppIntent.