Otrzymuj dynamiczne linki Firebase na Androida

Aby otrzymać Firebase dynamiczne linki, które zostały utworzone , musi zawierać dynamiczne linki SDK w swojej aplikacji i wywołać FirebaseDynamicLinks.getDynamicLink() metodę, gdy obciążenia aplikacji, aby uzyskać dane przekazywane w Dynamic Link.

  1. Jeśli tego nie zrobiłeś, dodaj Firebase do projektu Android .

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

  2. Korzystanie z Firebase Android Bom , deklarują zależność dla biblioteki dynamiczne linki Android w module (app szczebla) Gradle plik (zazwyczaj app/build.gradle ).

    Dla optymalnego doświadczenia z dynamiczne linki, zalecamy umożliwiając Google Analytics w projekcie Firebase i dodanie Firebase SDK Google Analytics do swojej aplikacji.

    Jawa

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:29.0.3')
    
        // Declare 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 Bom Android , aplikacja będzie zawsze używać kompatybilne wersje bibliotek Firebase Android.

    (Alternatywna) Stwierdzenie Firebase zależności biblioteki bez użycia BOM

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

    Należy pamiętać, że w przypadku korzystania z wielu bibliotek Firebase w swojej aplikacji, zalecamy korzystania z BOM do zarządzania wersjami biblioteki, co gwarantuje, że wszystkie wersje są kompatybilne.

    dependencies {
        // Declare 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.0'
        implementation 'com.google.firebase:firebase-analytics:20.0.2'
    }
    

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:29.0.3')
    
        // Declare 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 Bom Android , aplikacja będzie zawsze używać kompatybilne wersje bibliotek Firebase Android.

    (Alternatywna) Stwierdzenie Firebase zależności biblioteki bez użycia BOM

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

    Należy pamiętać, że w przypadku korzystania z wielu bibliotek Firebase w swojej aplikacji, zalecamy korzystania z BOM do zarządzania wersjami biblioteki, co gwarantuje, że wszystkie wersje są kompatybilne.

    dependencies {
        // Declare 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.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:20.0.2'
    }
    
  3. W konsoli Firebase otwórz sekcję dynamiczne linki. Zaakceptuj warunki korzystania z usługi, jeśli zostaniesz o to poproszony.

Podobnie jak w przypadku zwykłego głębokich linków , należy dodać nowy filtr zamiarem aktywności, która obsługuje głębokie linki do swojej 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ą dynamiczny link 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ć głęboki związek, zadzwoń getDynamicLink() metodę:

Jawa

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

Należy zadzwonić getDynamicLink() w każdej działalności, która może zostać uruchomiona przez odnośnik, chociaż związek może być dostępny z zamiarem wykorzystaniem getIntent().getData() . Wywołanie getDynamicLink() pobiera odnośnik i podaje, że dane tak jest przetwarzane tylko raz przez aplikację.

Normalnie zadzwonić getDynamicLink() w głównej działalności, jak również wszelkie działania zapoczątkowane przez intencyjny filtrów pasujących link.

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:

  • Zadzwoń FirebaseDynamicLinks.getDynamicLink() w swoich punktach wejścia aplikacja:
    • 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. Zazwyczaj jest to automatycznie dodane przez google-services Gradle wtyczki.
    • Obejmują google-services.json plik konfiguracyjny w swojej aplikacji.
    • Zadzwoń FirebaseAnalytics.getInstance() przed wywołaniem FirebaseDynamicLinks.getDynamicLink() .

W Androidzie 6.0 (poziom API 23) i wyższe, można skonfigurować aplikację do obsługi dynamiczne linki bezpośrednio, gdy aplikacja jest już zainstalowana używając Android App Links .

Upewnij się, że dodałeś świadectwie odcisk SHA256 dla swojej aplikacji do projektu w konsoli Firebase . Dynamic Links zajmie się konfiguracją powiązania witryny z linkami aplikacji dla Twojej domeny Dynamic Links.

Dodaj filtr zamiaru automatycznego zweryfikowane do działalności, która zajmie się Dynamic Link, ustawienie hosta do dynamicznego odsyłacze domenie projektu, jak znaleźć 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>

Należy zauważyć, że android:host musi być ustawiony do dynamicznych odsyłacze domenie, a nie domenę głębokiej link.

Wszystkie autoVerify intent filtry w swoim manifeście muszą być zarejestrowane w celu App Linki do zaangażowania. Uchwyty Firebase to automatycznie dla Twoich dynamiczne linki domen, ale można to sprawdzić przez otwarcie assetlinks.json plik hostowane na dynamiczne linki domenie:

https://YOUR_DOMAIN/.well-known/assetlinks.json
Wszystkie nazwy spakować Firebase Aplikacje powinny być uwzględnione.

Linki dynamiczne będą teraz wysyłane bezpośrednio do Twojej aplikacji. Będziesz w stanie uzyskać głęboki link i inne dane Dynamic Link wywołując getDynamicLink() w Działaniu dodano App Links zamiaru do filtra (jak opisano w rączkę głębokich linków ).

Uwaga: Ponieważ Wywoływanie poprzez App Linki przenosi użytkownika bezpośrednio do aplikacji Dynamic Link nie może honorować wymaganej wersji minimum. Więc gdy aplikacja jest otwarta, trzeba porównać minimalnej wersji w Dynamic Link'S ( getminimumappversion ) przeciwko PackageInfo.versionCode i przekierować użytkownika do aktualizacji aplikacji w razie potrzeby stosując getUpdateAppIntent .