Pobieranie Linków dynamicznych Firebase na Androida

Aby otrzymać Linki dynamiczne Firebase, które utworzonej przez siebie, musisz umieścić w aplikacji pakiet SDK Linków dynamicznych i wywołać metodę Metoda FirebaseDynamicLinks.getDynamicLink(), gdy aplikacja wczytuje się na uzyskać dane przekazywane w linku dynamicznym.

  1. Jeśli jeszcze nie masz tego za sobą, dodaj Firebase do swojego projektu na Androida.

    Podczas rejestracji aplikacji podaj klucz podpisywania SHA-1. Jeśli używasz App Links: podaj też klucz SHA-256.

  2. w pliku Gradle (na poziomie aplikacji) modułu, (zwykle <project>/<app-module>/build.gradle.kts lub <project>/<app-module>/build.gradle), dodaj zależność z biblioteką Linków dynamicznych na Androida. Zalecamy użycie metody Funkcja BoM Firebase na Androida aby kontrolować obsługę wersji biblioteki.

    Aby zapewnić optymalne działanie linków dynamicznych, zalecamy włączenie Google Analytics, w projekcie Firebase i dodając 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'
    }
    

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

    (Wersja alternatywna) Dodawanie zależności biblioteki 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 używasz wielu bibliotek Firebase w aplikacji, zalecamy korzystanie z BoM do zarządzania wersjami biblioteki, dzięki czemu wszystkie wersje

    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'
    }
    
    Szukasz modułu biblioteki korzystającego z usługi Kotlin? Zaczyna się za Październik 2023 r. (Firebase BoM 32.5.0), programiści, zarówno w języku Kotlin, jak i w języku Java, zależą od modułu biblioteki głównej (więcej informacji znajdziesz w Najczęstsze pytania na temat tej inicjatywy).
  3. W konsoli Firebase otwórz Linki dynamiczne. . Jeśli pojawi się taka prośba, zaakceptuj warunki korzystania z usługi.

Tak jak zwykłych precyzyjnych linków, musisz dodać nowy filtr intencji do działania, które obsługuje precyzyjne linki do aplikacji. Filtr intencji powinien wychwytywać precyzyjne linki w domenie, ponieważ Link dynamiczny przekierowuje do Twojej domeny, jeśli Twoja aplikacja jest zainstalowana. Jest to wymagane, aby aplikacja mogła: otrzymują dane linku dynamicznego po ich zainstalowaniu lub zaktualizowaniu ze Sklepu Play oraz kliknięciem przycisku Przycisk 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 schematu i hosta określonego przez Ciebie, aplikacja rozpocząć aktywność za pomocą tego filtra intencji, aby obsłużyć link.

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 każdej aktywności musisz wywoływać użytkownika getDynamicLink(), który może być uruchamianych za pomocą linku, choć może on być dostępny z poziomu intencji, za pomocą: getIntent().getData(). Dzwonię pod getDynamicLink() pobiera link i usuwa dane, tak aby zostały one przetworzone tylko raz aplikacji.

Normalnie w głównej aktywności dzwonisz również do użytkownika getDynamicLink() jak wszystkie działania uruchomione 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 rejestrować te zdarzenia, musisz najpierw skonfigurować Google Analytics aby pobrać precyzyjny link. 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 Wtyczka do obsługi Gradle google-services.
    • Dołącz google-services.json plik konfiguracyjny w Twojej aplikacji.
    • Zanim zadzwonisz, zadzwoń pod numer FirebaseAnalytics.getInstance() FirebaseDynamicLinks.getDynamicLink()

W Androidzie 6.0 (poziom interfejsu API 23) i nowszych możesz skonfigurować aplikację do obsługi linków dynamicznych bezpośrednio, gdy aplikacja jest już zainstalowana, za pomocą Linki aplikacji na Androida

Sprawdź, czy do projektu dodano odcisk cyfrowy certyfikatu SHA256 dla aplikacji w konsoli Firebase. Linki dynamiczne będą konfigurować powiązanie z witryną dla linków aplikacji z domeny linków dynamicznych.

Dodaj do aktywności, która będzie obsługiwać link dynamiczny, automatycznie zweryfikowany filtr intencji, ustawiając wartość w domenie linków dynamicznych swojego projektu jako znajdziesz 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 można było korzystać z aplikacji, wszystkie filtry intencji (autoVerify) w pliku manifestu muszą być zarejestrowane Linki zachęcające do interakcji. Firebase automatycznie obsługuje tę funkcję w przypadku domen Linków dynamicznych, ale możesz sprawdzić Aby to zrobić, otwórz plik assetlinks.json hostowany w Twojej domenie linków dynamicznych:

https://YOUR_DOMAIN/.well-known/assetlinks.json
ze wszystkich aplikacji Firebase należy podać nazwy pakietów.

Linki dynamiczne będą teraz wysyłane bezpośrednio do Twojej aplikacji. Będziesz mieć dostęp do precyzyjnego linku i innych dane linków dynamicznych przez wywołanie metody getDynamicLink() w aktywności dodanej przez Ciebie w linkach aplikacji. filtr intencji do (jak opisano w Obsługa precyzyjnych linków).

Uwaga: wywołanie linku aplikacji przenosi użytkownika bezpośrednio do aplikacji, Link dynamiczny nie obsługuje wymaganej minimalnej wersji. Uruchomienie aplikacji porównać minimalną wersję linku dynamicznego ( getminimumappversion) przeciwko PackageInfo.versionCode i w razie potrzeby przekierować użytkownika, aby uaktualnił aplikację, używając getUpdateAppIntent.