Android'de Firebase Dinamik Bağlantılarını Alın

Oluşturduğunuz Firebase Dynamic Links'i almak için Dynamic Links SDK'sını uygulamanıza eklemeniz ve uygulamanız yüklendiğinde verileri Dynamic Link'te geçirmek için FirebaseDynamicLinks.getDynamicLink() yöntemini çağırmanız gerekir.

  1. Henüz yapmadıysanız, Android projenize Firebase'i ekleyin .

    Uygulamanızı kaydettirirken SHA-1 imzalama anahtarınızı belirtin. Uygulama Bağlantıları kullanıyorsanız, SHA-256 anahtarınızı da belirtin.

  2. Firebase Android BoM kullanarak, modülünüzdeki (uygulama düzeyi) Gradle dosyanızdaki (genellikle app/build.gradle ) Dynamic Links Android kitaplığının bağımlılığını bildirin.

    Dynamic Links ile optimum deneyim için, Firebase projenizde Google Analytics'i etkinleştirmenizi ve Google Analytics için Firebase SDK'sını uygulamanıza eklemenizi öneririz.

    Java

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

    Firebase Android BoM'yi kullanarak uygulamanız her zaman Firebase Android kitaplıklarının uyumlu sürümlerini kullanır.

    (Alternatif) BoM kullanmadan Firebase kitaplık bağımlılıklarını bildirin

    Firebase Malzeme Listesini kullanmamayı seçerseniz, her bir Firebase kitaplık sürümünü bağımlılık satırında belirtmeniz gerekir.

    Uygulamanızda birden fazla Firebase kitaplığı kullanıyorsanız kitaplık sürümlerini yönetmek için BoM'yi kullanmanızı önemle tavsiye ederiz, bu da tüm sürümlerin uyumlu olmasını sağlar.

    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.1'
        implementation 'com.google.firebase:firebase-analytics:21.1.0'
    }
    

    Kotlin+KTX

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

    Firebase Android BoM'yi kullanarak uygulamanız her zaman Firebase Android kitaplıklarının uyumlu sürümlerini kullanır.

    (Alternatif) BoM kullanmadan Firebase kitaplık bağımlılıklarını bildirin

    Firebase Malzeme Listesini kullanmamayı seçerseniz, her bir Firebase kitaplık sürümünü bağımlılık satırında belirtmeniz gerekir.

    Uygulamanızda birden fazla Firebase kitaplığı kullanıyorsanız kitaplık sürümlerini yönetmek için BoM'yi kullanmanızı önemle tavsiye ederiz, bu da tüm sürümlerin uyumlu olmasını sağlar.

    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.1'
        implementation 'com.google.firebase:firebase-analytics-ktx:21.1.0'
    }
    
  3. Firebase konsolunda , Dinamik Bağlantılar bölümünü açın. Sizden istenirse hizmet şartlarını kabul edin.

Düz derin bağlantılarda olduğu gibi, uygulamanız için derin bağlantıları işleyen etkinliğe yeni bir amaç filtresi eklemelisiniz. Uygulamanız yüklüyse Dinamik Bağlantı alanınıza yönlendirme yapacağından, amaç filtresi alanınızın derin bağlantılarını yakalamalıdır. Bu, uygulamanızın Play Store'dan yüklendikten/güncellendikten ve Devam düğmesine bir kez basıldıktan sonra Dinamik Bağlantı verilerini alması için gereklidir. 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>

Kullanıcılar, belirttiğiniz şemaya ve ana bilgisayara derin bağlantı içeren bir Dinamik Bağlantı açtığında, uygulamanız bağlantıyı işlemek için bu amaç filtresiyle etkinliği başlatır.

Derin bağlantıyı almak için getDynamicLink() yöntemini çağırın:

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

Bağlantı, getIntent().getData() kullanılarak elde edilebilir olsa bile, bağlantı tarafından başlatılabilecek her etkinlikte getDynamicLink() () öğesini çağırmalısınız. getDynamicLink() çağrılması, bağlantıyı alır ve bu verileri siler, böylece uygulamanız tarafından yalnızca bir kez işlenir.

Normalde ana etkinlikte ve bağlantıyla eşleşen amaç filtreleri tarafından başlatılan tüm etkinliklerde getDynamicLink() .

Analizleri kaydedin

Aşağıdaki olaylar Google Analytics'te otomatik olarak izlenebilir ve Firebase konsolunda gösterilebilir.

  • dynamic_link_app_open
  • dynamic_link_first_open
  • dynamic_link_app_update

Bu etkinlikleri kaydetmek için derin bağlantıyı almadan önce Google Analytics'i yapılandırmanız gerekir. Aşağıdaki koşulların karşılandığını kontrol edin:

  • Uygulamanızın giriş noktalarında FirebaseDynamicLinks.getDynamicLink() 'i arayın:
    • Başlatıcı etkinlikleri. örneğin: action="android.intent.action.MAIN" , category="android.intent.category.LAUNCHER" .
    • Faaliyet giriş noktaları. örneğin: onStart() , onCreate() .
    • Derin bağlantı etkinlikleri.
  • Google Analytics'i kurun ve kullanın:
    • Google Analytics bağımlılığını dahil edin. Bu genellikle google-services Gradle eklentisi tarafından otomatik olarak eklenir.
    • google-services.json yapılandırma dosyasını uygulamanıza ekleyin.
    • FirebaseAnalytics.getInstance() öğesini çağırmadan önce FirebaseDynamicLinks.getDynamicLink() () öğesini arayın.

Android 6.0 (API düzeyi 23) ve sonraki sürümlerde, uygulamanızı Android App Links kullanarak, uygulamanız zaten yüklendiğinde doğrudan Dinamik Bağlantıları işleyecek şekilde ayarlayabilirsiniz.

Firebase konsolunda projenize uygulamanız için SHA256 sertifikası parmak izini eklediğinizden emin olun. Dynamic Links, Dynamic Links alan adınız için App Links web sitesi ilişkilendirmesinin kurulumunu üstlenir.

Etkinliğe, Dynamic Link'i işleyecek otomatik olarak doğrulanmış bir amaç filtresi ekleyin ve ana bilgisayarı Firebase konsolunda bulunduğu gibi projenizin Dynamic Links etki alanına ayarlayın. 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>

android:host , derin bağlantınızın etki alanına değil, Dinamik Bağlantılar etki alanınıza ayarlanması gerektiğini unutmayın.

Uygulama Bağlantılarının etkileşime geçebilmesi için bildiriminizdeki tüm autoVerify amaç filtrelerinin kaydedilmesi gerekir. Firebase, Dynamic Links alanlarınız için bunu otomatik olarak halleder, ancak Dynamic Links alan adınızda barındırılan assetlinks.json dosyasını açarak bunu kontrol edebilirsiniz:

https://YOUR_DOMAIN/.well-known/assetlinks.json
Tüm Firebase uygulamalarınızın paket adları dahil edilmelidir.

Dinamik Bağlantılar artık doğrudan uygulamanıza gönderilecek. Uygulama Bağlantıları amaç filtresini eklediğiniz Aktivitede getDynamicLink() çağırarak derin bağlantıyı ve diğer Dinamik Bağlantı verilerini elde edebileceksiniz ( Derin bağlantıları ele alma bölümünde açıklandığı gibi).

Not: Uygulama Bağlantıları aracılığıyla çağırma, kullanıcıyı doğrudan uygulamaya götürdüğünden, Dinamik Bağlantı gerekli minimum sürümü karşılayamaz. Bu nedenle, uygulama açıldıktan sonra, Dynamic Link'in minimum sürümünü ( getminimumappversion ) PackageInfo.versionCode ile karşılaştırmanız ve gerekirse getUpdateAppIntent kullanarak kullanıcıyı uygulamayı yükseltmesi için yönlendirmeniz gerekir.