Aby otrzymywać Firebase Dynamic Links, które
utworzyłeś/utworzyłaś, 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.
Konfigurowanie Firebase i pakietu SDK Dynamic Links
Jeśli jeszcze tego nie zrobiono, dodaj Firebase do projektu na Androida.
Podczas rejestrowania aplikacji podaj klucz podpisywania SHA-1. Jeśli używasz linków aplikacji, podaj też 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ść 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.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' }
Dzięki użyciu Firebase Android BoMaplikacja zawsze będzie używać zgodnych wersji bibliotek Firebase na Androida.
(Alternatywnie) Dodaj zależności biblioteki Firebase bez używania pakietu BoM
Jeśli zdecydujesz się nie używać Firebase BoM, musisz określić każdą wersję biblioteki Firebase w jej wierszu zależności.
Jeśli w aplikacji używasz kilku bibliotek Firebase, zdecydowanie zalecamy korzystanie z BoM do zarządzania wersjami bibliotek. Dzięki temu wszystkie wersje będą ze sobą 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' }
- W konsoli Firebase otwórz sekcję Dynamic Links. Zaakceptuj warunki korzystania z usługi, jeśli pojawi się taka prośba.
Dodawanie filtra intencji dla precyzyjnych linków
Podobnie jak w przypadku
zwykłych precyzyjnych linków musisz dodać nowy filtr intencji do działania, które obsługuje precyzyjne linki do Twojej aplikacji. Filtr intencji powinien przechwytywać precyzyjne linki do Twojej domeny, ponieważ Dynamic Link przekieruje na Twoją domenę, jeśli aplikacja jest zainstalowana. 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 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.
Obsługa precyzyjnych linków
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); } });
Musisz wywołać getDynamicLink()
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.
Zazwyczaj wywołujesz getDynamicLink()
w głównej aktywności oraz w przypadku wszystkich działań wywoływanych przez filtry intencji, które pasują do linku.
Statystyki nagrywania
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, przed pobraniem precyzyjnego linku musisz skonfigurować Google Analytics. Sprawdź, czy są spełnione te warunki:
- Wywołaj funkcję
FirebaseDynamicLinks.getDynamicLink()
w punktach wejścia do aplikacji: - Aktywności 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 związane z precyzyjnymi linkami.
- Konfigurowanie i używanie Google Analytics:
- Dodaj zależność Google Analytics. Zwykle jest on automatycznie dodawany przez wtyczkę Gradle.
google-services
- Dołącz do aplikacji plik konfiguracji
google-services.json
. - Zadzwoń pod numer
FirebaseAnalytics.getInstance()
, a potem doFirebaseDynamicLinks.getDynamicLink()
.
Obsługa Dynamic Links za pomocą linków aplikacji
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.
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 konsola 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 domen Dynamic Links, ale możesz to sprawdzić, otwierając plik assetlinks.json
hostowany w domenie Dynamic Links:
https://YOUR_DOMAIN/.well-known/assetlinks.jsonPowinny się w nim znaleźć nazwy pakietów wszystkich Twoich aplikacji Firebase.
Dynamic Links zostanie teraz wysłany bezpośrednio do Twojej aplikacji. Aby uzyskać precyzyjny link i inne dane Dynamic Link, wywołaj funkcję getDynamicLink()
w działaniu, do którego dodano filtr intencji Linki do aplikacji (jak opisano w sekcji Praca z precyzyjnymi linkami).
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. Dlatego po otwarciu aplikacji musisz porównać minimalną wersję linku dynamicznego ( getminimumappversion) z PackageInfo.versionCode i w razie potrzeby przekierować użytkownika do aktualizacji aplikacji za pomocą metody getUpdateAppIntent.