获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

Otrzymuj dynamiczne linki Firebase na Androida

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:31.1.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.1.0'
        implementation 'com.google.firebase:firebase-analytics:21.2.0'
    }
    

    Kotlin+KTX

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