Aby otrzymać
utworzone przez siebie Linki dynamiczne Firebase, musisz umieścić w aplikacji pakiet SDK Linków dynamicznych i wywołać metodę FirebaseDynamicLinks.getDynamicLink()
podczas wczytywania aplikacji w celu pobrania danych przekazywanych w linku dynamicznym.
Konfiguracja Firebase i pakietu Dynamic Links SDK
Dodaj Firebase do swojego projektu Android, chyba że masz to już za sobą.
Podczas rejestracji aplikacji podaj klucz podpisywania SHA-1. Jeśli korzystasz z linków aplikacji, podaj też klucz SHA-256.
-
W pliku Gradle (na poziomie aplikacji) modułu (na poziomie aplikacji) (zwykle
<project>/<app-module>/build.gradle.kts
lub<project>/<app-module>/build.gradle
) dodaj zależność z biblioteką linków dynamicznych na Androida. Do kontrolowania obsługi wersji biblioteki zalecamy używanie funkcji Firebase Android BoM.Aby zapewnić optymalne działanie Linków dynamicznych, włącz Google Analytics w projekcie Firebase i dodaj do aplikacji pakiet SDK Firebase dla Google Analytics.
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.1.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' }
Dzięki użyciu BoM Firebase Android BoM Twoja aplikacja zawsze używa zgodnych wersji bibliotek Firebase na Androida.
(Alternatywnie) Dodawanie zależności bibliotek Firebase bez korzystania z BM
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 swojej aplikacji używasz wielu bibliotek Firebase, zdecydowanie zalecamy korzystanie z BoM do zarządzania wersjami bibliotek. Dzięki temu będziesz mieć pewność, że 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.0.2' }
- W konsoli Firebase otwórz sekcję Połączenia dynamiczne. Jeśli pojawi się taka prośba, zaakceptuj warunki korzystania z usługi.
Dodawanie filtra intencji na potrzeby precyzyjnych linków
Tak jak w przypadku
zwykłych precyzyjnych linków, do działania, które obsługuje precyzyjne linki w aplikacji, musisz dodać nowy filtr intencji. Filtr intencji powinien wychwytywać precyzyjne linki w Twojej domenie, ponieważ po zainstalowaniu aplikacji link dynamiczny przekierowuje do Twojej domeny. Jest to wymagane, aby aplikacja otrzymała dane linku dynamicznego po jej zainstalowaniu lub zaktualizowaniu ze Sklepu Play i kliknięciem 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ą link dynamiczny z precyzyjnym linkiem do określonego przez Ciebie schematu i hosta, aplikacja rozpocznie działanie z tym filtrem intencji w celu obsługi linku.
Obsługa precyzyjnych linków
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); } });
W przypadku każdego działania, które może uruchomić link, musisz wywołać metodę getDynamicLink()
, nawet jeśli link może być dostępny z intencji przy użyciu metody getIntent().getData()
. Wywołanie getDynamicLink()
powoduje pobranie linku i usunięcie danych, dzięki czemu aplikacja może je przetworzyć tylko raz.
Zwykle wywołujesz funkcję getDynamicLink()
w głównym działaniu oraz w innych działaniach uruchamianych przez filtry intencji, które pasują do linku.
Rejestrowanie statystyk
Poniższe 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 precyzyjnego linku. Sprawdź, czy są spełnione te warunki:
- Wywołaj
FirebaseDynamicLinks.getDynamicLink()
w punktach wejścia aplikacji: - Działania 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 z precyzyjnymi linkami.
- Skonfiguruj i używaj Google Analytics:
- Uwzględnij zależność Google Analytics. Jest on zwykle dodawany automatycznie przez wtyczkę
google-services
do Gradle. - Umieść plik konfiguracyjny
google-services.json
w swojej aplikacji. - Zanim zadzwonisz pod numer
FirebaseDynamicLinks.getDynamicLink()
, zadzwoń pod numerFirebaseAnalytics.getInstance()
.
Obsługa linków dynamicznych za pomocą linków aplikacji
W Androidzie 6.0 (poziom interfejsu API 23) i nowszych możesz skonfigurować aplikację tak, aby obsługiwała linki dynamiczne bezpośrednio, gdy jest już zainstalowana, za pomocą linków aplikacji na Androida.
Upewnij się, że w konsoli Firebase został dodany odcisk cyfrowy certyfikatu SHA256 swojej aplikacji. Linki dynamiczne skonfigurują powiązanie witryny z linkami aplikacji dla Twojej domeny linków dynamicznych.
Dodaj filtr intencji z automatyczną weryfikacją do aktywności, która będzie obsługiwać link dynamiczny, ustawiając hosta na domenę Linków dynamicznych projektu znajdziesz ją 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ę linków dynamicznych, a nie domenę precyzyjnego linku.
Aby linki aplikacji działały, musisz zarejestrować wszystkie filtry intencji autoVerify
w pliku manifestu. Firebase obsługuje to automatycznie w przypadku Twoich domen Linków dynamicznych, ale możesz to sprawdzić, otwierając plik assetlinks.json
hostowany w Twojej domenie linków dynamicznych:
https://YOUR_DOMAIN/.well-known/assetlinks.jsonNależy uwzględnić wszystkie nazwy pakietów aplikacji Firebase.
Linki dynamiczne będą teraz wysyłane bezpośrednio do Twojej aplikacji. Aby uzyskać precyzyjny link i inne dane linków dynamicznych, wywołaj funkcję getDynamicLink()
w aktywności, do której został dodany filtr intencji linków aplikacji (jak opisano w sekcji Obsługa precyzyjnych linków).
Uwaga: wywołanie linku aplikacji przenosi użytkownika bezpośrednio do aplikacji, więc link dynamiczny nie może uwzględniać wymaganej wersji minimalnej. Po otwarciu aplikacji musisz porównać minimalną wersję linku dynamicznego ( getminimumappversion) z tagiem PackageInfo.versionCode i w razie potrzeby przekierować użytkownika, aby uaktualnił aplikację, używając getUpdateAppIntent.