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.
Skonfiguruj Firebase i pakiet SDK Linków dynamicznych
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.
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.6.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' }
Korzystając z Firebase Android BoM , Twoja aplikacja będzie zawsze korzystać z kompatybilnych wersji bibliotek Firebase Android.
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 ).(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.0' }
- W konsoli Firebase otwórz sekcję Linki dynamiczne . Zaakceptuj warunki korzystania z usługi, jeśli zostaniesz o to poproszony.
Dodaj filtr intencji dla precyzyjnych linków
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 odbierać 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.
Obsługuj głębokie linki
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łaniemFirebaseDynamicLinks.getDynamicLink()
.
Obsługa łączy dynamicznych za pomocą łączy aplikacji
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.jsonPowinny 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 metodę 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 .