Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

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 rejestrowania 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:28.4.2')
    
        // 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:20.1.1'
        implementation 'com.google.firebase:firebase-analytics:19.0.2'
    }
    

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.4.2')
    
        // 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:20.1.1'
        implementation 'com.google.firebase:firebase-analytics-ktx:19.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ą 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ć 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 .