Aby otrzymać utworzone przez siebie linki dynamiczne Firebase , musisz umieścić pakiet SDK linków dynamicznych w swojej aplikacji i wywoływać metodę FirebaseDynamicLinks.getDynamicLink()
podczas ładowania aplikacji, aby uzyskać dane przekazane w linku dynamicznym.
Skonfiguruj Firebase i pakiet Dynamic Links SDK
Jeśli jeszcze tego nie zrobiłeś, dodaj Firebase do swojego projektu na Androida .
Podczas rejestrowania aplikacji podaj klucz podpisywania SHA-1. Jeśli korzystasz z linków do aplikacji, podaj również swój 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 Dynamic Links Biblioteka Androida. Zalecamy używanie Firebase Android BoM do kontrolowania wersji bibliotek.Aby optymalnie korzystać z Linków dynamicznych, zalecamy włączenie Google Analytics w projekcie Firebase i dodanie pakietu Firebase SDK dla Google Analytics do swojej aplikacji.
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.3.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-ktx' implementation 'com.google.firebase:firebase-analytics-ktx' }
Korzystając z Firebase Android BoM , Twoja aplikacja będzie zawsze korzystać ze zgodnych wersji bibliotek Firebase Android.
(Alternatywnie) Dodaj zależności biblioteki Firebase bez korzystania z 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 korzystanie z BoM do zarządzania wersjami bibliotek, co zapewnia zgodność wszystkich wersji.
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-ktx:21.1.0' implementation 'com.google.firebase:firebase-analytics-ktx:21.3.0' }
Java
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.3.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' }
Korzystając z Firebase Android BoM , Twoja aplikacja będzie zawsze korzystać ze zgodnych wersji bibliotek Firebase Android.
(Alternatywnie) Dodaj zależności biblioteki Firebase bez korzystania z 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 korzystanie z BoM do zarządzania wersjami bibliotek, co zapewnia zgodność wszystkich wersji.
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.1.0' implementation 'com.google.firebase:firebase-analytics:21.3.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 przechwytywać precyzyjne linki z Twojej domeny, ponieważ link dynamiczny przekieruje do Twojej domeny, jeśli Twoja aplikacja jest zainstalowana. Jest to wymagane, aby Twoja aplikacja mogła odbierać dane Dynamic Link po jej zainstalowaniu/aktualizacji ze Sklepu Play i dotknięciu przycisku Kontynuuj. 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ą link dynamiczny z precyzyjnym linkiem do określonego schematu i hosta, aplikacja rozpocznie działanie z tym filtrem intencji, aby obsłużyć link.
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 intencji przy użyciugetIntent().getData()
. Wywołanie metodygetDynamicLink()
pobiera łącze i czyści te dane, dzięki czemu aplikacja przetwarza je tylko raz.Zwykle wywołujesz
getDynamicLink()
w głównym działaniu, jak również we wszystkich działaniach uruchamianych przez filtry intencji, które pasują 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 rejestrować te zdarzenia, musisz skonfigurować Google Analytics przed pobraniem precyzyjnego 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ę
google-services
Gradle. - 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 Android App Links .
Upewnij się, że odcisk cyfrowy certyfikatu SHA256 dla Twojej aplikacji został dodany do projektu w konsoli Firebase . Dynamic Links zajmie się konfiguracją powiązania witryny App Links dla Twojej domeny Dynamic Links.
Dodaj automatycznie weryfikowany filtr intencji do działania, który będzie obsługiwał link dynamiczny, ustawiając hosta na domenę linków dynamicznych twojego projektu, tak jak jest to widoczne 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
android:host
musi być ustawiony na domenę Twoich linków dynamicznych, a nie domenę precyzyjnego linku.Wszystkie filtry intencji
autoVerify
w Twoim manifeście muszą być zarejestrowane, aby linki do aplikacji działały. Firebase obsługuje to automatycznie dla Twoich domen z Linkami dynamicznymi, ale możesz to sprawdzić, otwierając plikassetlinks.json
hostowany w Twojej domenie z Linkami dynamicznymi:https://YOUR_DOMAIN/.well-known/assetlinks.json
Wszystkie nazwy pakietów Twoich aplikacji Firebase powinny zostać uwzględnione.Linki dynamiczne będą teraz wysyłane bezpośrednio do Twojej aplikacji. Możesz uzyskać precyzyjny link i inne dane dynamicznego łącza, wywołując funkcję
getDynamicLink()
w działaniu, do którego dodano filtr intencji łączy aplikacji (zgodnie z opisem w sekcji Obsługa głębokich łączy ).Uwaga: ponieważ wywoływanie za pośrednictwem linków aplikacji przenosi użytkownika bezpośrednio do aplikacji, link dynamiczny nie może honorować wymaganej wersji minimalnej. Dlatego po otwarciu aplikacji należy porównać minimalną wersję łącza dynamicznego ( getminimumappversion ) z PackageInfo.versionCode i przekierować użytkownika do uaktualnienia aplikacji, jeśli jest to wymagane, za pomocą funkcji getUpdateAppIntent .
O ile nie stwierdzono inaczej, treść tej strony jest objęta licencją Creative Commons – uznanie autorstwa 4.0, a fragmenty kodu są dostępne na licencji Apache 2.0. Szczegółowe informacje na ten temat zawierają zasady dotyczące witryny Google Developers. Java jest zastrzeżonym znakiem towarowym firmy Oracle i jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2023-10-01 UTC.
[{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"Brak potrzebnych mi informacji" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"Zbyt skomplikowane / zbyt wiele czynności do wykonania" },{ "type": "thumb-down", "id": "outOfDate", "label":"Nieaktualne treści" },{ "type": "thumb-down", "id": "translationIssue", "label":"Problem z tłumaczeniem" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"Problem z przykładami/kodem" },{ "type": "thumb-down", "id": "otherDown", "label":"Inne" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Łatwo zrozumieć" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Rozwiązało to mój problem" },{ "type": "thumb-up", "id": "otherUp", "label":"Inne" }]