Kullanıcı tarafından sıfırlanabilir bir reklam kimliği alın Parti Android Jetpack.

Kullanıcı gizliliğini korumak için tüm Android uygulamalarının, kullanıcı tarafından sıfırlanabilen tanımlayıcılarla çalışması en iyi uygulamadır. Bu tür tanımlayıcılardan biri, reklam kişiselleştirme gibi reklamcılık kullanım alanları için belirli bir kullanıcıyı benzersiz şekilde tanımlayan reklam kimliğidir.

Uygulamanızı çalıştıran cihazlarda standartlaştırılmış bir reklam izleme çözümünü desteklemek için Reklam Kimliği kitaplığını kullanabilirsiniz. Android 4.0 (API düzeyi 14) yüklü cihazlarda kullanılabilen bu kitaplık ve daha yüksek bir düzeyde, sistem düzeyinde reklam sağlayıcılarla etkileşim kurmak için bir arayüz tanımlar. Bu arayüz, uygulamanızın tutarlı reklam kimliği değerleri almasını sağlar.

Reklam kimliği kitaplığına dahil edilen reklam sağlayıcı, reklam sağlayıcının uyguladığı bir ayarlar ekranını açmayla ilgili standart bir intent de tanımlar. Bu ayarlar ekranı, kullanıcının reklam kimliğini sıfırlamasına ve reklam kişiselleştirmeyi devre dışı bırakmasına olanak tanır.

Bu kılavuzda, cihaz kullanıcısı başına tutarlı bir reklam kimliği elde etmek için Reklam Kimliği kitaplığının istemci modülünün nasıl kullanılacağı açıklanmaktadır. Ardından bu kılavuzda, kitaplığın mimarisine genel bir bakış sunulmaktadır.

İstemci uygulamanızı yapılandırma

Uygulamanız, reklam kimliği kitaplığının istemci modülüyle etkileşime geçerek kullanıcıyı temsil eden tutarlı bir reklam kimliği alabilir. ve uygulama ile etkileşimde bulunur.

Reklam kimliği, evrensel olarak benzersiz tanımlayıcı (UUID) biçiminin 3. sürümü veya eşdeğer bir 128 bit biçimi kullanılarak temsil edilir:

38400000-8cf0-11bd-b23e-10b96e40000d

Reklam kimliği kitaplığı, bu biçimi kullanarak kimlikler sağlamak için döndürülen değeri gerektiği gibi normalleştirir.

Uygulamanızın kullanıcı tarafından sıfırlanabilen reklam kimliğini almak için aşağıdaki adımları uygulayın:

  1. Şu numarayı arayarak reklam sağlayıcısının müsait olup olmadığını kontrol edin: AdvertisingIdClient.isAdvertisingIdProviderAvailable(). Bu yöntem false döndürürse uygulamanız, gerekli reklam izleme kullanım alanlarını gerçekleştirmek için başka bir yöntem kullanmalıdır.

  2. AdvertisingIdClient.getAdvertisingIdInfo() çağrısını yaparak reklam kimliği dahil reklam tanımlayıcısı ayrıntılarını alın. Reklam kimliği kitaplığı bu yöntemi bir çalışan iş parçacığında yürütür ve 10 saniyelik bağlantı zaman aşımını kullanır.

Aşağıdaki kod snippet'i, reklam kimliğinin nasıl alınacağını gösterir. ve reklam sağlayıcısından alınan diğer bilgilerle birlikte:

app/build.gradle

Groovy

dependencies {
    implementation 'androidx.ads:ads-identifier:1.0.0-alpha01'

    // Used for the calls to addCallback() in the snippets on this page.
    implementation 'com.google.guava:guava:28.0-android'
}

Kotlin

dependencies {
    implementation("androidx.ads:ads-identifier:1.0.0-alpha01")

    // Used for the calls to addCallback() in the snippets on this page.
    implementation("com.google.guava:guava:28.0-android")
}

Reklam Kimliğiİstemcim

Kotlin

// Used for the call to addCallback() within this snippet.
import com.google.common.util.concurrent.Futures.addCallback

private fun determineAdvertisingInfo() {
    if (AdvertisingIdClient.isAdvertisingIdProviderAvailable()) {
        val advertisingIdInfoListenableFuture =
                AdvertisingIdClient.getAdvertisingIdInfo(applicationContext)

        addCallback(advertisingIdInfoListenableFuture,
                object : FutureCallback<AdvertisingIdInfo> {
            override fun onSuccess(adInfo: AdvertisingIdInfo?) {
                val id: String = adInfo?.id
                val providerPackageName: String = adInfo?.providerPackageName
                val isLimitTrackingEnabled: Boolean =
                                adInfo?.isLimitTrackingEnabled
            }

            // Any exceptions thrown by getAdvertisingIdInfo()
            // cause this method to be called.
            override fun onFailure(t: Throwable) {
                Log.e("MY_APP_TAG",
                        "Failed to connect to Advertising ID provider.")
                // Try to connect to the Advertising ID provider again or fall
                // back to an ad solution that doesn't require using the
                // Advertising ID library.
            }
        }, Executors.newSingleThreadExecutor())
    } else {
        // The Advertising ID client library is unavailable. Use a different
        // library to perform any required ad use cases.
    }
}

Java

// Used for the call to addCallback() within this snippet.
import com.google.common.util.concurrent.Futures;

private void determineAdvertisingInfo() {
    if (AdvertisingIdClient.isAdvertisingIdProviderAvailable()) {
        ListenableFuture<AdvertisingIdInfo> advertisingIdInfoListenableFuture =
                AdvertisingIdClient.getAdvertisingIdInfo(getApplicationContext());
        Futures.addCallback(advertisingIdInfoListenableFuture,
                new FutureCallback<AdvertisingIdInfo>() {
                    @Override
                    public void onSuccess(AdvertisingIdInfo adInfo) {
                        String id = adInfo.getId();
                        String providerPackageName =
                                adInfo.getProviderPackageName();
                        boolean isLimitTrackingEnabled =
                                adInfo.isLimitTrackingEnabled();

                    // Any exceptions thrown by getAdvertisingIdInfo()
                    // cause this method to be called.
                    @Override
                    public void onFailure(Throwable throwable) {
                        Log.e("MY_APP_TAG",
                                "Failed to connect to Advertising ID provider.");
                        // Try to connect to the Advertising ID provider again
                        // or fall back to an ad solution that doesn't require
                        // using the Advertising ID library.
                    }
                });
    } else {
        // The Advertising ID client library is unavailable. Use a different
        // library to perform any required ad use cases.
    }
}

Reklam kimliği kitaplığı mimarisi

Mimari şeması
Şekil 1. Reklam kimliği kitaplığı mimarisi

Şekil 1'de, Reklam Kimliği kitaplığının yapısı gösterilmektedir. Kitaplık aşağıdaki modüllerden oluşur:

  • Uygulamalara dahil edilen ince bir katman olan istemci modülü.
  • Cihaz üreticisinin kullanıma sunduğu bir sağlayıcı modülü. Bu modülün uygulamalarında, kullanıcılara reklam kimliklerini sıfırlama ve reklam izleme tercihlerini değiştirme olanağı sunmak için bir ayarlar kullanıcı arayüzü tanımlanmalıdır.

İstemci modülü, reklam almak için sağlayıcı modülüyle Reklam izlemeyle ilgili kimlikler ve kullanıcı tercihleri.

Kitaplık birden fazla sağlayıcıyı nasıl işler?

Bir cihaz aynı anda birden fazla sistem düzeyinde reklam sağlayıcısını destekleyebilir anlamına gelir. Reklam Kimliği kitaplığı bu durumu tespit ederse, uygulamanız, her zaman aynı sağlayıcıdan bilgi alıyor. sağlayıcısını kullanmaya devam edebilirsiniz. Bu işlem, reklam kimliğinin tutarlı olmasını sağlar.

Kullanılabilir reklam sağlayıcı grubu zaman içinde değişirse ve uygulamanız farklı bir reklam tanımlayıcısı sağlayıcısıyla etkileşime geçerse diğer tüm istemci uygulamaları da bu yeni sağlayıcıyı kullanmaya başlar. Uygulamanızdaki davranış, Kullanıcı reklam kimliğini sıfırlamayı istemiş olsaydı ortaya çıkacaktı.

Reklam kimliği sağlayıcı kitaplığı, aşağıdaki deterministik sıralamayı kullanarak sağlayıcıları sıralayın:

  1. androidx.ads.identifier.provider.HIGH_PRIORITY iznini isteyen sağlayıcılar.
  2. Cihazda en uzun süredir yüklü olan sağlayıcılar.
  3. Alfabetik sıralamada ilk sırada gösterilen sağlayıcılar.