Pobieranie Linków dynamicznych Firebase na Androida

Aby otrzymywać Firebase Dynamic Links, które zostało utworzone, musisz uwzględnić w aplikacji pakiet SDK Dynamic Links i wywoływać metodę FirebaseDynamicLinks.getDynamicLink() podczas wczytywania aplikacji, aby pobierać dane przekazywane w parametry Dynamic Link.

  1. Jeśli jeszcze nie masz tego za sobą, dodaj Firebase do swojego projektu na Androida.

    Podczas rejestracji aplikacji podaj klucz podpisywania SHA-1. Jeśli używasz App Links: podaj też klucz SHA-256.

  2. w pliku Gradle (na poziomie aplikacji) modułu, (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 uzyskać optymalne wyniki w przypadku 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:33.5.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 Firebase Android BoMaplikacja zawsze będzie używać zgodnych wersji bibliotek Firebase na Androida.

    (Wersja alternatywna) Dodaj zależności biblioteki Firebase bez użycia komponentu BoM

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

    Pamiętaj, że jeśli używasz wielu bibliotek Firebase w swojej aplikacji, zalecamy korzystanie z BoM do zarządzania wersjami biblioteki. Dzięki temu 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 dla Kotlina? 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 Dynamic Links . Zaakceptuj warunki korzystania z usługi, jeśli pojawi się taka prośba.

Tak jak zwykłych precyzyjnych linków, musisz dodać nowy filtr intencji do działania, które obsługuje precyzyjne linki do aplikacji. Filtr intencji powinien wychwytywać precyzyjne linki w domenie, ponieważ Jeśli Twoja aplikacja jest zainstalowana, Dynamic Link przekierowuje do Twojej domeny. Jest to wymagane, aby aplikacja mogła otrzymywać dane Dynamic Link po zainstalowaniu lub zaktualizowaniu jej w Sklepie Play i kliknięciu 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ą 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);
            }
        });

W każdej aktywności musisz wywoływać użytkownika getDynamicLink(), który może być uruchamianych za pomocą linku, choć może on być dostępny z poziomu 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.

Normalnie w głównej aktywności dzwonisz również do użytkownika getDynamicLink() jak wszystkie działania uruchomione przez filtry intencji, które pasują do linku.

Rejestrowanie statystyk

Poniższe zdarzenia mogą być automatycznie śledzone w Google Analytics i wyświetlane w Firebase.

  • dynamic_link_app_open
  • dynamic_link_first_open
  • dynamic_link_app_update

Aby zarejestrować te zdarzenia, musisz skonfigurować Google Analytics, zanim aby pobrać precyzyjny link. Sprawdź, czy są spełnione 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:
    • Dodaj zależność Google Analytics. Jest on zwykle dodawany automatycznie przez Wtyczka do obsługi Gradle google-services.
    • Dołącz google-services.json plik konfiguracyjny w Twojej aplikacji.
    • Zadzwoń pod numer FirebaseAnalytics.getInstance(), a potem do FirebaseDynamicLinks.getDynamicLink().

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

Sprawdź, czy do projektu dodano odcisk cyfrowy certyfikatu SHA256 dla aplikacji konsolę Firebase. Dynamic Links zajmie się konfigurowaniem powiązania z linkami aplikacji dla witryny w Twojej 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 w polu android:host należy ustawić domenę Dynamic Links, a nie 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 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
Należy uwzględnić nazwy pakietów wszystkich aplikacji Firebase.

Aplikacja Dynamic Links będzie teraz przesyłana bezpośrednio do Twojej aplikacji. Będziesz mieć dostęp do precyzyjnego linku i innych Dynamic Link za pomocą wywołania getDynamicLink() w aktywności dodanej przez Ciebie w linkach aplikacji filtr intencji do (jak opisano w Obsługuj precyzyjne linki).

Uwaga: wywołanie linku aplikacji przenosi użytkownika bezpośrednio do aplikacji, Link dynamiczny nie obsługuje wymaganej minimalnej wersji. Uruchomienie aplikacji porównać minimalną wersję linku dynamicznego ( getminimumappversion) przeciwko PackageInfo.versionCode i w razie potrzeby przekierować użytkownika, aby uaktualnił aplikację, używając getUpdateAppIntent.