Aby odebrać
utworzony przez siebie Firebase Dynamic Links, musisz umieścić w aplikacji pakiet SDK Dynamic Links i wywołać metodę FirebaseDynamicLinks.getDynamicLink()
podczas wczytywania aplikacji w celu pobrania danych przekazywanych w Dynamic Link.
Skonfiguruj Firebase i pakiet SDK Dynamic Links
Jeśli jeszcze tego nie zrobiono, dodaj Firebase do projektu na Androida.
Podczas rejestracji aplikacji podaj klucz podpisywania SHA-1. Jeśli używasz linków aplikacji, podaj też klucz SHA-256.
-
W pliku Gradle (na poziomie modułu) 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. Do kontrolowania obsługi wersji biblioteki zalecamy używanie Firebase Android BoM.Aby zapewnić optymalne działanie usługi Dynamic Links, 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.5.1")) // 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 bibliotek Firebase bez korzystania z BoM
Jeśli zdecydujesz się nie używać obiektu 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.1.2' }
- W konsoli Firebase otwórz sekcję Dynamic Links. 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 Twojej aplikacji, musisz dodać nowy filtr intencji. Filtr intencji powinien wychwytywać precyzyjne linki w Twojej domenie, ponieważ po zainstalowaniu aplikacji Dynamic Link przekierowuje do Twojej domeny. Jest to wymagane, aby Twoja aplikacja mogła otrzymywać dane Dynamic Link po zainstalowaniu lub zaktualizowaniu ze Sklepu 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); } });
Funkcję getDynamicLink()
musisz wywołać 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.
Zwykle wywołujesz funkcję getDynamicLink()
w głównym działaniu oraz w innych działaniach uruchamianych przez filtry intencji, które pasują do linku.
Statystyki nagrywania
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 funkcję
FirebaseDynamicLinks.getDynamicLink()
w punktach wejścia do aplikacji: - Działania 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 z precyzyjnymi linkami.
- Konfigurowanie i używanie usługi Google Analytics:
- Dodaj zależność Google Analytics. Jest on zwykle dodawany automatycznie przez wtyczkę
google-services
do Gradle. - Dołącz do aplikacji plik konfiguracji
google-services.json
. - Zanim zadzwonisz pod numer
FirebaseDynamicLinks.getDynamicLink()
, zadzwoń pod numerFirebaseAnalytics.getInstance()
.
Obsługa aplikacji Dynamic Links za pomocą linków aplikacji
W Androidzie 6.0 (poziom interfejsu API 23) i nowszych możesz skonfigurować aplikację tak, aby obsługiwała Dynamic Links bezpośrednio, gdy jest już zainstalowana, korzystając z linków 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 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 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 Twoich 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
Dynamic Links będzie teraz wysyłany bezpośrednio do Twojej aplikacji. Będziesz mieć dostęp do precyzyjnego linku i innych danych Dynamic Link, wywołując 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 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. Gdy otworzysz aplikację, 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 metody getUpdateAppIntent.