Android'de Firebase Dynamic Links'i alma

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

  1. Henüz yapmadıysanız Firebase'i Android projenize 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. Modül (uygulama düzeyi) Gradle dosyanıza (genellikle <project>/<app-module>/build.gradle.kts veya <project>/<app-module>/build.gradle) Android için Dynamic Links kitaplığının bağımlılığını ekleyin. Kitaplık sürümlendirmesini kontrol etmek için Firebase Android BoM simgesini kullanmanızı öneririz.

    Dynamic Links ile en iyi deneyimi yaşamak için Firebase projenizde Google Analytics'i etkinleştirmenizi ve Google Analytics için Firebase SDK'sını uygulamanıza eklemenizi öneririz.

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

    Firebase Android BoM kullanıldığında uygulamanız Firebase Android kitaplıklarının daima uyumlu sürümlerini kullanır.

    (Alternatif) BoM

    Firebase BoM kullanmamayı seçerseniz her 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'ı kullanmanızı önemle tavsiye ederiz. Bu, tüm sürümlerin uyumlu olmasını sağlar.

    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.1.2'
    }
    Kotlin'e özgü bir kitaplık modülü mü arıyorsunuz? Ekim 2023'ten (Firebase BoM 32.5.0) itibaren hem Kotlin hem de Java geliştiricileri ana kitaplık modülünden yararlanabilir (ayrıntılar için bu girişimle ilgili SSS bölümüne bakın).
  3. Firebase konsolunda Dynamic Links bölümünü açın. İstenirse hizmet şartlarını kabul edin.

Basit derin bağlantılarda olduğu gibi, uygulamanızın derin bağlantılarını işleyen etkinliğe yeni bir intent filtresi eklemeniz gerekir. Uygulamanız yüklüyse Dynamic Link alanınıza yönlendireceğinden intent filtresi, alanınızın derin bağlantılarını yakalamalıdır. Bu, uygulamanızın Play Store'dan yüklenip/güncellendikten ve kullanıcı Devam düğmesine dokunduktan sonra Dynamic Link verilerini alması için gereklidir. AndroidManifest.xml'te:

<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 makineye derin bağlantı içeren bir Dynamic Link açtığında uygulamanız, bağlantıyı işlemek için etkinliği bu intent filtresiyle başlatır.

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

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

Bağlantı, getIntent().getData() kullanılarak intent'ten alınabilse bile bağlantı tarafından başlatılabilecek her etkinlikte getDynamicLink() çağrısı yapmanız gerekir. getDynamicLink() çağrısı, bağlantıyı alır ve bu verileri temizler. Böylece, uygulamanız tarafından yalnızca bir kez işlenir.

Genellikle ana etkinlikte ve bağlantıyla eşleşen intent filtreleri tarafından başlatılan tüm etkinliklerde getDynamicLink() çağrılır.

Kayıt analizleri

Aşağıdaki etkinlikler 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 kaydedebilmek için derin bağlantıyı aldıktan önce Google Analytics öğesini yapılandırmanız gerekir. Aşağıdaki koşulların karşılanıp karşılanmadığını kontrol edin:

  • Uygulama giriş noktalarınızda FirebaseDynamicLinks.getDynamicLink() işlevini çağırın:
    • Başlatıcı etkinlikleri. Ör.: action="android.intent.action.MAIN", category="android.intent.category.LAUNCHER".
    • Etkinlik giriş noktaları. Ör.: onStart(), onCreate().
    • Derin bağlantı etkinlikleri.
  • Google Analytics'ü kurup kullanma:
    • Google Analytics bağımlılığını ekleyin. Bu genellikle google-services Gradle eklentisi tarafından otomatik olarak eklenir.
    • Uygulamanıza google-services.json yapılandırma dosyasını ekleyin.
    • FirebaseDynamicLinks.getDynamicLink()'u aramadan önce FirebaseAnalytics.getInstance()'ü arayın.

Android 6.0 (API düzeyi 23) ve sonraki sürümlerde, Android Uygulama Bağlantıları'nı kullanarak uygulamanızı, Dynamic Links uygulamanız zaten yüklüyken doğrudan işlemleri yürütecek şekilde ayarlayabilirsiniz.

Uygulamanızın SHA256 sertifika parmak izini Firebase konsolunda projenize eklediğinizden emin olun. Dynamic Links, Dynamic Links alanınız için Uygulama Bağlantıları web sitesi ilişkilendirmesini oluşturur.

Etkinliğe, Dynamic Link ile ilgilenecek otomatik olarak doğrulanmış bir intent filtresi ekleyin. Barındırıcıyı, Firebase konsolunda bulunan projenizin Dynamic Links alanına ayarlayın. AndroidManifest.xml'te:

<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 değerinin, derin bağlantınızın alanı yerine Dynamic Links alanınıza ayarlanması gerektiğini unutmayın.

Uygulama bağlantılarının etkileşim kurabilmesi için manifest'inizdeki tüm autoVerify intent filtrelerinin kayıtlı olması gerekir. Firebase, bu işlemi Dynamic Links alanlarınız için otomatik olarak yapar ancak Dynamic Links alanınızda barındırılan assetlinks.json dosyasını açarak bu durumu kontrol edebilirsiniz:

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

Dynamic Links artık doğrudan uygulamanıza gönderilir. Uygulama Bağlantıları intent filtresini eklediğiniz Etkinlik'te getDynamicLink()'yi çağırarak derin bağlantıyı ve diğer Dynamic Link verilerini alabilirsiniz (Derin bağlantıları işleme bölümünde açıklandığı gibi).

Not: Uygulama bağlantıları aracılığıyla çağrılma, kullanıcıyı doğrudan uygulamaya yönlendirdiğinden dinamik bağlantılar, gerekli minimum sürümü karşılayamaz. Bu nedenle, uygulama açıldığında Dinamik Bağlantı'nın minimum sürümünü ( getminimumappversion) PackageInfo.versionCode ile karşılaştırmanız ve gerekirse getUpdateAppIntent kullanarak kullanıcıyı uygulamayı yükseltmeye yönlendirmeniz gerekir.