Android'de Firebase Dynamic Links'i alma

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

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

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

  2. Modülünüzün (uygulama düzeyinde) Gradle dosyasında (genellikle <project>/<app-module>/build.gradle.kts veya <project>/<app-module>/build.gradle) Android için Dynamic Links kitaplığına olan bağımlılığı ekleyin. Kitaplık sürümünü kontrol etmek için Firebase Android BoM kullanmanızı öneririz.

    Dynamic Links ile en iyi deneyimi yaşamak için Firebase projenizde Google Analytics özelliğini 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:35.0.1"))
    
        // 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 kullanarak uygulamanızın her zaman Firebase Android kitaplıklarının uyumlu sürümlerini kullanmasını sağlayabilirsiniz.

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

    Firebase BoM kullanmamayı tercih ederseniz her Firebase kitaplığı sürümünü kendi 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 sayede tüm sürümlerin uyumlu olmasını sağlayabilirsiniz.

    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:24.0.0'
    }
  3. Firebase konsolunda Dynamic Links bölümünü açın. İstenirse hizmet şartlarını kabul edin.

Düz 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önlendirme yapacağından intent filtresi alanınızın derin bağlantılarını yakalamalıdır. Bu, uygulamanızın Play Store'dan yüklenip/güncellenip "Devam" düğmesine dokunulduktan sonra Dynamic Link 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 makineye derin bağlantı içeren bir Dynamic Link açtığında uygulamanız, bağlantıyı işlemek için bu intent filtresiyle etkinliği başlatır.

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

Kotlin

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 kullanılabilir olsa bile bağlantı tarafından başlatılabilecek her etkinlikte getDynamicLink() yöntemini çağırmanız gerekir. getDynamicLink() çağrıldığında bağlantı alınır ve bu veriler temizlenir. Böylece veriler uygulamanız tarafından yalnızca bir kez işlenir.

Normalde getDynamicLink() yöntemini ana etkinlikte ve bağlantıyla eşleşen intent filtreleri tarafından başlatılan tüm etkinliklerde çağırırsınız.

Kayıt analizleri

Aşağıdaki etkinlikler Google Analytics uygulamasında 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 yapılandırmanız gerekir. Aşağıdaki koşulların karşılandığından emin olun:

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

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

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

Dynamic Link işlemini gerçekleştirecek etkinliğe otomatik olarak doğrulanmış bir intent filtresi ekleyin ve ana makineyi projenizin Dynamic Links alanına Firebase konsolunda bulunduğu şekilde ayarlayın. AndroidManifest.xml bölümünde:

<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 alanına değil, Dynamic Links alanınıza ayarlanmalıdır.

Uygulama Bağlantıları'nın devreye girmesi için manifestinizdeki tüm autoVerify intent filtrelerinin kayıtlı olması gerekir. Firebase, Dynamic Links alanlarınız için bu işlemi otomatik olarak gerçekleştirir ancak Dynamic Links alanı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.

Dynamic Links artık doğrudan uygulamanıza gönderilecek. Uygulama Bağlantıları intent filtresini eklediğiniz etkinlikte getDynamicLink() yöntemini ç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ı üzerinden çağrıldığında kullanıcı doğrudan uygulamaya yönlendirildiğinden, 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ı yeni sürüme geçirmeye yönlendirmeniz gerekir.