Otrzymuj linki dynamiczne Firebase na Androida

Aby otrzymać utworzone łącza dynamiczne Firebase , musisz dołączyć pakiet SDK łączy dynamicznych do swojej aplikacji i wywołać metodę FirebaseDynamicLinks.getDynamicLink() podczas ładowania aplikacji, aby pobrać dane przekazywane w łączu dynamicznym.

  1. Jeśli jeszcze tego nie zrobiłeś, dodaj Firebase do swojego projektu na Androida .

    Podczas rejestrowania aplikacji podaj klucz podpisu SHA-1. Jeśli korzystasz z łączy aplikacji, podaj także 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ść dla łączy dynamicznych biblioteka dla Androida. Zalecamy używanie Firebase Android BoM do kontrolowania wersji bibliotek.

    Aby zapewnić optymalne działanie Linków dynamicznych, zalecamy włączenie Google Analytics w projekcie Firebase i dodanie pakietu SDK Firebase dla Google Analytics do swojej aplikacji.

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

    Korzystając z Firebase Android BoM , Twoja aplikacja będzie zawsze korzystać z kompatybilnych wersji bibliotek Firebase Android.

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

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

    Pamiętaj, że jeśli używasz w swojej aplikacji wielu bibliotek Firebase, zdecydowanie zalecamy używanie BoM do zarządzania wersjami bibliotek, co gwarantuje, że wszystkie wersje będą kompatybilne.

    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:21.2.0'
        implementation 'com.google.firebase:firebase-analytics:21.5.1'
    }
    
    Szukasz modułu bibliotecznego specyficznego dla Kotlina? Począwszy od października 2023 r. (Firebase BoM 32.5.0) zarówno programiści Kotlin, jak i Java mogą polegać na głównym module biblioteki (więcej informacji można znaleźć w często zadawanych pytaniach dotyczących tej inicjatywy ).
  3. W konsoli Firebase otwórz sekcję Linki dynamiczne . Zaakceptuj warunki korzystania z usługi, jeśli zostaniesz o to poproszony.

Podobnie jak w przypadku zwykłych precyzyjnych linków , musisz dodać nowy filtr intencji do działania obsługującego precyzyjne linki do Twojej aplikacji. Filtr intencji powinien wychwytywać głębokie linki z Twojej domeny, ponieważ Link dynamiczny przekieruje do Twojej domeny, jeśli Twoja aplikacja jest zainstalowana. Jest to wymagane, aby aplikacja mogła otrzymać dane łącza dynamicznego po jej zainstalowaniu/zaktualizowaniu ze Sklepu Play i kliknięciu przycisku Kontynuuj. W pliku 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ą łącze dynamiczne z precyzyjnym łączem do określonego schematu i hosta, aplikacja rozpocznie działanie z tym filtrem intencji w celu obsługi łącza.

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

Musisz wywołać getDynamicLink() w każdym działaniu, które może zostać uruchomione przez łącze, nawet jeśli łącze może być dostępne z zamierzenia przy użyciu metody getIntent().getData() . Wywołanie metody getDynamicLink() powoduje pobranie łącza i wyczyszczenie danych, dzięki czemu są one przetwarzane tylko raz przez aplikację.

Zwykle wywołujesz getDynamicLink() w głównym działaniu, a także we wszystkich działaniach uruchamianych przez filtry intencji pasujące do łącza.

Analityka rekordów

Następujące 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 głębokiego linku. Sprawdź, czy spełnione są następujące warunki:

  • Wywołaj FirebaseDynamicLinks.getDynamicLink() w punktach wejścia aplikacji:
    • Działania 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 głębokimi linkami.
  • Skonfiguruj i korzystaj z Google Analytics:
    • Uwzględnij zależność Google Analytics. Zwykle jest to automatycznie dodawane przez wtyczkę Gradle google-services .
    • Dołącz plik konfiguracyjny google-services.json do swojej aplikacji.
    • Wywołaj FirebaseAnalytics.getInstance() przed wywołaniem FirebaseDynamicLinks.getDynamicLink() .

W systemie Android 6.0 (poziom interfejsu API 23) i nowszych możesz skonfigurować aplikację tak, aby obsługiwała linki dynamiczne bezpośrednio, gdy aplikacja jest już zainstalowana, korzystając z funkcji Linki aplikacji na Androida .

Upewnij się, że dodałeś odcisk palca certyfikatu SHA256 dla swojej aplikacji do projektu w konsoli Firebase . Dynamic Links zajmie się konfiguracją powiązania witryny App Links z Twoją domeną Dynamic Links.

Dodaj automatycznie zweryfikowany filtr intencji do działania, które będzie obsługiwać łącze dynamiczne, ustawiając hosta na domenę łączy dynamicznych Twojego projektu, taką jak znaleziona w konsoli Firebase . W pliku 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ę Linków Dynamicznych, a nie domenę Twojego precyzyjnego linku.

Aby linki aplikacji mogły działać, wszystkie filtry intencji autoVerify w Twoim manifeście muszą być zarejestrowane. Firebase obsługuje to automatycznie w przypadku 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
Powinny zostać uwzględnione wszystkie nazwy pakietów aplikacji Firebase.

Linki dynamiczne będą teraz wysyłane bezpośrednio do Twojej aplikacji. Będziesz mógł uzyskać precyzyjny link i inne dane łącza dynamicznego, wywołując funkcję getDynamicLink() w działaniu, do którego dodałeś filtr intencji łączy aplikacji (zgodnie z opisem w sekcji Obsługa głębokich linków ).

Uwaga: ponieważ wywołanie za pośrednictwem łączy aplikacji przenosi użytkownika bezpośrednio do aplikacji, łącze dynamiczne nie może honorować wymaganej wersji minimalnej. Zatem po otwarciu aplikacji należy porównać minimalną wersję łącza dynamicznego ( getminimumappversion ) z PackageInfo.versionCode i w razie potrzeby przekierować użytkownika do aktualizacji aplikacji, korzystając z metody getUpdateAppIntent .