Android'de Firebase Dynamic Links'i alma

Firebase Dynamic Links oluşturduğunuz verileri 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ı 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ığının bağımlılığını ekleyin. Kitaplık sürüm oluşturmayı kontrol etmek için Firebase Android BoM kullanmanızı öneririz.

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

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.16.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)  Firebase kitaplığı bağımlılıklarını BoM kullanmadan ekleyin.

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

    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.5.0'
    }
    Kotlin'e özgü bir kitaplık modülü mü arıyorsunuz? Ekim 2023 (Firebase BoM 32.5.0)'ten itibaren hem Kotlin hem de Java geliştiriciler ana kitaplık modülünü kullanabilir (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.

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

<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 amaç filtresiyle 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 amaçtan kullanılabilir olsa bile bağlantı tarafından başlatılabilecek her etkinlikte getDynamicLink() işlevini çağırmanız gerekir. getDynamicLink() çağrısı, bağlantıyı alır ve verileri temizler. Böylece veriler yalnızca uygulamanız tarafından bir kez işlenir.

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

Kayıt analizi

Aşağıdaki etkinlikler Google Analytics'da 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ığını kontrol edin:

  • Uygulamanızın giriş noktalarında FirebaseDynamicLinks.getDynamicLink() işlevini çağırın:
    • Başlatıcı etkinlikleri (ör. şunlar): action="android.intent.action.MAIN", category="android.intent.category.LAUNCHER".
    • Etkinlik giriş noktaları (ör. aşağıdaki gibi): onStart(), onCreate().
    • Derin bağlantı etkinlikleri.
  • Google Analytics'ı kurma ve 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() adlı kişiyi aramadan önce FirebaseAnalytics.getInstance() adlı kişiyi arayın.

Android 6.0 (API düzeyi 23) ve sonraki sürümlerde, uygulamanız zaten yüklüyken Dynamic Links işleyecek şekilde ayarlayabilirsiniz. Bunun için Android uygulama bağlantılarını kullanmanız gerekir.

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 ayarlamayı ele alır.

Dynamic Link işlevini işleyecek etkinliğe otomatik olarak doğrulanmış bir amaç filtresi ekleyin. Ana makineyi, projenizin Dynamic Links alanına Firebase konsolunda bulunduğu gibi ayarlayın. AndroidManifest.xml içinde:

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

Uygulama bağlantılarının çalışması için manifestinizdeki tüm autoVerify intent filtrelerinin kaydedilmesi gerekir. Firebase, Dynamic Links alanlarınız için bu işlemi otomatik olarak yapar 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ı eklenmelidir.

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

Not: Uygulama Bağlantıları üzerinden çağırma işlemi kullanıcıyı doğrudan uygulamaya yönlendirdiğinden, dinamik bağlantı gerekli minimum sürümü karşılayamaz. Bu nedenle, uygulama açıldıktan sonra 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.