Android'de Firebase Dynamic Links'i alma

Oluşturduğunuz Firebase Dynamic Links'i almak için uygulamanıza Dynamic Links SDK'sını eklemeniz ve Dynamic Link'te iletilen verileri almak için uygulamanız yüklendiğinde 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. App Links kullanıyorsanız SHA-256 anahtarınızı da belirtin.

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

    Dynamic Links ile optimum bir deneyim 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.1.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 her zaman uyumlu sürümlerini kullanır.

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

    Firebase BoM'yi kullanmamayı seçerseniz her Firebase kitaplığı 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. Böylece 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.0.1'
    }
    
    Kotlin'e özel 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üne bağlı olabilir (ayrıntılar için Bu girişimle ilgili SSS bölümüne bakın).
  3. Firebase konsolunda Dinamik Bağlantılar bölümünü açın. İstendiğinde 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üklenirse Dinamik Bağlantı sizi 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üklendikten/güncellendikten sonra Dinamik Bağlantı verilerini alması ve Devam düğmesine bir kez dokunulması için gereklidir. AndroidManifest.xml ürününde:

<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 şema ve ana makineye derin bağlantı içeren bir Dinamik Bağlantı'yı 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 amaçtan kullanılabilir olsa bile bağlantı tarafından başlatılabilecek her etkinlikte getDynamicLink() çağrısı yapmanız gerekir. getDynamicLink() çağrıldığında bağlantı alınır ve ilgili veriler temizlenir. Böylece veriler uygulamanız tarafından yalnızca bir kez işlenir.

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

Analizleri kaydet

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

  • Uygulamanızın giriş noktalarında FirebaseDynamicLinks.getDynamicLink() numarasını arayın:
    • Launcher etkinlikleri. ör.: action="android.intent.action.MAIN", category="android.intent.category.LAUNCHER".
    • Etkinlik 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.
    • Uygulamanıza google-services.json yapılandırma dosyasını ekleyin.
    • FirebaseDynamicLinks.getDynamicLink() numaralı telefonu aramadan önce FirebaseAnalytics.getInstance() adlı kuruluşu arayın.

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

Firebase konsolunda projenize uygulamanız için SHA256 sertifika parmak izini eklediğinizden emin olun. Dynamic Links, Dynamic Links alan adınız için App Links web sitesi ilişkilendirmesini ayarlama işini üstlenecektir.

Dinamik Bağlantı'yı işleyecek Etkinliğe otomatik olarak doğrulanmış bir intent filtresi ekleyin. Ardından, ana makineyi projenizin Dynamic Links alan adına Firebase konsolunda bulunan şekilde 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 öğesinin, derin bağlantınızın alan adına değil, Dynamic Links alan adınıza ayarlanması gerektiğini unutmayın.

Uygulama Bağlantılarının etkileşim kurabilmesi için manifest dosyanızdaki tüm autoVerify intent filtreleri kaydedilmelidir. Firebase, bu işlemi Dynamic Links alanlarınız için otomatik olarak işler ancak bunu, Dynamic Links alan adınızda barındırılan assetlinks.json dosyasını açarak 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. Uygulama Bağlantıları intent filtresini eklediğiniz Etkinlik'te (Derin bağlantıları işleme bölümünde açıklandığı üzere) getDynamicLink() numaralı telefonu arayarak derin bağlantıyı ve diğer Dynamic Link verilerini alabilirsiniz.

Not: Uygulama Bağlantıları aracılığıyla çağrı yapmak, 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.