Pobieranie Linków dynamicznych Firebase na Androida

Aby otrzymywać Firebase Dynamic Links, które utworzysz, musisz uwzględnić w aplikacji pakiet SDK Dynamic Links i wywołać metodę FirebaseDynamicLinks.getDynamicLink(), gdy aplikacja się wczyta, aby uzyskać dane przekazywane 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. 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 wersji biblioteki.

    Aby w pełni korzystać z Dynamic Links, zalecamy włączenie Google Analytics w projekcie 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:34.0.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'
    }

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

    (Alternatywnie)  Dodaj zależności biblioteki Firebase bez użycia BoM

    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 aplikacji używasz wielu bibliotek Firebase, zdecydowanie zalecamy korzystanie z BoM do zarządzania wersjami bibliotek, co zapewnia 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:23.0.0'
    }
  3. W Firebasekonsoli otwórz sekcję Dynamic Links. W razie potrzeby zaakceptuj warunki korzystania z usługi.

Podobnie jak w przypadku zwykłych precyzyjnych linków musisz dodać nowy filtr intencji do działania, które obsługuje precyzyjne linki w Twojej aplikacji. Filtr intencji powinien przechwytywać precyzyjne linki do Twojej domeny, ponieważ Dynamic Link przekieruje do Twojej domeny, jeśli aplikacja jest zainstalowana. Jest to wymagane, aby aplikacja otrzymywała 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, aplikacja uruchomi 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ływać 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 funkcji getDynamicLink() pobiera link i czyści te dane, aby były przetwarzane przez aplikację tylko raz.

Zwykle wywołujesz funkcję getDynamicLink() w głównej aktywności, a także w 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 przed pobraniem precyzyjnego linku. Sprawdź, czy spełnione są te warunki:

  • Wywołanie funkcji FirebaseDynamicLinks.getDynamicLink() w punktach wejścia aplikacji:
    • Aktywności Launchera, np.: action="android.intent.action.MAIN", category="android.intent.category.LAUNCHER".
    • Punkty wejścia aktywności, np.: onStart(), onCreate().
    • działania związane z precyzyjnymi linkami.
  • Skonfiguruj i używaj Google Analytics:
    • Dodaj zależność Google Analytics. Zwykle jest on dodawany automatycznie przez google-services wtyczkę Gradle.
    • Dołącz do aplikacji google-services.json plik konfiguracyjny.
    • Zadzwoń pod numer FirebaseAnalytics.getInstance() przed nawiązaniem połączenia z numerem FirebaseDynamicLinks.getDynamicLink().

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

Sprawdź, czy w projekcie w Firebasekonsoli został dodany odcisk cyfrowy certyfikatu SHA256 dla Twojej aplikacji. Dynamic Links zajmie się konfigurowaniem powiązania witryny z linkami do aplikacji w przypadku domeny Dynamic Links.

Dodaj do aktywności automatycznie weryfikowany filtr intencji, który będzie obsługiwać Dynamic Link, ustawiając hosta na domenę Dynamic Links projektu, jak widać 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 Twoją domenę Dynamic Links, a nie na domenę precyzyjnego linku.

Aby linki do aplikacji działały, wszystkie filtry intencji autoVerify w manifeście muszą być zarejestrowane. Firebase automatycznie obsługuje to w przypadku domen Dynamic Links, ale możesz to sprawdzić, otwierając plik Dynamic Links hostowany w domenie Dynamic Links:assetlinks.json

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

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

Uwaga: ponieważ wywoływanie za pomocą linków do aplikacji przenosi użytkownika bezpośrednio do aplikacji, link dynamiczny nie może uwzględniać wymaganej minimalnej wersji. Gdy aplikacja zostanie otwarta, musisz porównać minimalną wersję linku dynamicznego ( getminimumappversion) z wartością PackageInfo.versionCode i w razie potrzeby przekierować użytkownika do aktualizacji aplikacji za pomocą funkcji getUpdateAppIntent.