Catch up on highlights from Firebase at Google I/O 2023. Learn more

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

Oluşturduğunuz Firebase Dynamic Links'i almak için Dynamic Links SDK'yı uygulamanıza dahil etmeniz ve uygulamanız yüklendiğinde Dynamic Link'te aktarılan 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üzeyinde) Gradle dosyanızda (genellikle <project>/<app-module>/build.gradle ), Dynamic Links Android kitaplığı için bağımlılığı ekleyin. Kitaplık sürüm oluşturmayı kontrol etmek için Firebase Android BoM'yi 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'yı uygulamanıza eklemenizi öneririz.

    Kotlin+KTX

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

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

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

    Firebase BoM'yi kullanmamayı seçerseniz, her bir 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 tüm sürümlerin uyumlu olmasını sağlayan BoM'yi kullanmanızı kesinlikle öneririz.

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

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:32.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'yi kullandığınızda, uygulamanız her zaman Firebase Android kitaplıklarının uyumlu sürümlerini kullanır.

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

    Firebase BoM'yi kullanmamayı seçerseniz, her bir 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 tüm sürümlerin uyumlu olmasını sağlayan BoM'yi kullanmanızı kesinlikle öneririz.

    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:21.1.0'
        implementation 'com.google.firebase:firebase-analytics:21.3.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 dokunulduktan 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 bir 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:

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 getDynamicLink() getIntent().getData() kullanılarak niyetten mevcut olsa bile, bağlantı tarafından başlatılabilecek her aktivitede getDynamicLink()'i çağırmalısınız. getDynamicLink() öğesinin ç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 aktivitede ve bağlantıyla eşleşen amaç filtreleri tarafından başlatılan tüm aktivitelerde getDynamicLink() öğesini çağırırsınız.

Kayıt analitiği

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 sağlanıp sağlanmadığını kontrol edin:

  • Uygulama giriş noktalarınızda FirebaseDynamicLinks.getDynamicLink() öğesini arayın:
    • Başlatıcı etkinlikleri. örneğin: action="android.intent.action.MAIN" , category="android.intent.category.LAUNCHER" .
    • Aktivite giriş noktaları. örneğin: onStart() , onCreate() .
    • Derin bağlantı faaliyetleri.
  • Google Analytics'i kurun ve kullanın:

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

Uygulamanız için SHA256 sertifika parmak izini Firebase konsolundaki projenize eklediğinizden emin olun. Dinamik Bağlantılar, Dinamik Bağlantılar alanınız için Uygulama Bağlantıları web sitesi ilişkilendirmesinin kurulumunu gerçekleştirecektir.

Ana bilgisayarı, Firebase konsolunda bulunduğu şekilde projenizin Dinamik Bağlantılar alanına ayarlayarak, Dinamik Bağlantıyı işleyecek olan Etkinliğe otomatik olarak doğrulanmış bir amaç filtresi ekleyin. AndroidManifest.xml dosyasında:

<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 devreye girmesi için bildiriminizdeki tüm autoVerify amaç filtrelerinin kaydedilmesi gerekir. Firebase bunu Dinamik Bağlantılar alanlarınız için otomatik olarak işler, ancak bunu Dinamik Bağlantılar alanı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ı dahil edilmelidir.

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

Not: Uygulama Bağlantıları yoluyla çağırma, kullanıcıyı doğrudan uygulamaya götürdüğünden, bir 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.