Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Otrzymuj dynamiczne linki Firebase na Androida

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Aby otrzymać utworzone przez siebie Linki dynamiczne Firebase , musisz umieścić w swojej aplikacji pakiet SDK Linków dynamicznych i podczas ładowania aplikacji wywołać metodę FirebaseDynamicLinks.getDynamicLink() w celu pobrania danych z Linku dynamicznego.

  1. Jeśli jeszcze tego nie zrobiłeś, dodaj Firebase do swojego projektu na Androida .

    Podczas rejestrowania aplikacji określ klucz podpisywania SHA-1. Jeśli korzystasz z łączy aplikacji, podaj również swój klucz SHA-256.

  2. W pliku Gradle modułu (na poziomie aplikacji) (zwykle <project>/<app-module>/build.gradle ) dodaj zależność dla biblioteki Dynamic Links dla systemu Android. 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.

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:30.5.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 używać zgodnych wersji bibliotek Firebase na Androida.

    (Alternatywnie) Dodaj zależności biblioteki Firebase bez korzystania z BoM

    Jeśli zdecydujesz się nie korzystać z BoM Firebase, musisz określić każdą wersję biblioteki Firebase w jej wierszu zależności.

    Pamiętaj, że jeśli korzystasz z wielu bibliotek Firebase w swojej aplikacji, zdecydowanie zalecamy używanie 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.0.2'
        implementation 'com.google.firebase:firebase-analytics:21.1.1'
    }
    

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:30.5.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-ktx'
        implementation 'com.google.firebase:firebase-analytics-ktx'
    }
    

    Korzystając z Firebase Android BoM , Twoja aplikacja będzie zawsze używać zgodnych wersji bibliotek Firebase na Androida.

    (Alternatywnie) Dodaj zależności biblioteki Firebase bez korzystania z BoM

    Jeśli zdecydujesz się nie korzystać z BoM Firebase, musisz określić każdą wersję biblioteki Firebase w jej wierszu zależności.

    Pamiętaj, że jeśli korzystasz z wielu bibliotek Firebase w swojej aplikacji, zdecydowanie zalecamy używanie 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.0.2'
        implementation 'com.google.firebase:firebase-analytics-ktx:21.1.1'
    }
    
  3. W konsoli Firebase otwórz sekcję Linki dynamiczne . Zaakceptuj warunki korzystania z usługi, jeśli zostaniesz o to poproszony.

Podobnie jak w przypadku zwykłych precyzyjnych linków , musisz dodać nowy filtr intencji do działania, które obsługuje precyzyjne linki w Twojej aplikacji. Filtr intencji powinien wykrywać precyzyjne linki w Twojej domenie, ponieważ link dynamiczny przekieruje do Twojej domeny, jeśli Twoja aplikacja jest zainstalowana. Jest to wymagane, aby Twoja aplikacja otrzymywała dane Dynamic Link po jej zainstalowaniu/zaktualizowaniu ze Sklepu Play i jednym 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, Twoja aplikacja rozpocznie działanie z tym filtrem intencji, aby obsłużyć link.

Aby otrzymać precyzyjny link, wywołaj metodę getDynamicLink() :

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);
            }
        });

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) }

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 za pomocą getIntent().getData() . Wywołanie getDynamicLink() pobranie linku i wyczyszczenie danych, dzięki czemu aplikacja jest przetwarzana 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.

Analiza rekordów

Następujące zdarzenia można automatycznie śledzić w Google Analytics i wyświetlać 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 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 precyzyjnymi linkami.
  • Skonfiguruj i korzystaj z Google Analytics:
    • Uwzględnij zależność od 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łaniem FirebaseDynamicLinks.getDynamicLink() .

W systemie Android 6.0 (poziom interfejsu API 23) lub nowszym możesz skonfigurować aplikację do obsługi Linków dynamicznych bezpośrednio, gdy aplikacja jest już zainstalowana, przy użyciu Linków aplikacji na Androida .

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 z linkami aplikacji dla Twojej domeny Dynamic Links.

Dodaj automatycznie zweryfikowany filtr intencji do działania, które będzie obsługiwać link dynamiczny, ustawiając hosta na domenę linków dynamicznych Twojego projektu, tak jak 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ę Dynamic Links, a nie na 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 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
Należy uwzględnić 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 Dynamic Link, wywołując getDynamicLink() w działaniu, do którego dodano filtr intencji Linki aplikacji (zgodnie z opisem w sekcji Obsługa precyzyjnych linków ).

Uwaga: ponieważ wywoływanie przez linki aplikacji przenosi użytkownika bezpośrednio do aplikacji, łącze dynamiczne nie może uwzględniać wymaganej wersji minimalnej. Dlatego po otwarciu aplikacji musisz porównać minimalną wersję Dynamic Link ( getminimumappversion ) z PackageInfo.versionCode i przekierować użytkownika do aktualizacji aplikacji, jeśli jest to wymagane, za pomocą getUpdateAppIntent .