Kullanıcı tarafından sıfırlanabilir reklam kimliği alma Android Jetpack'in bir parçasıdır.
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 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ın çalıştığı cihazlarda standart bir reklam izleme çözümünü desteklemek için Advertising ID kitaplığını kullanabilirsiniz. Android 4.0 (API düzeyi 14) ve sonraki sürümleri çalıştıran cihazlarda kullanılabilen bu kitaplık, sistem düzeyindeki 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ına olanak tanır.
Reklam kimliği kitaplığına dahil edilen reklam sağlayıcı, reklam sağlayıcının uyguladığı bir ayarlar ekranını açmak için standart bir amaç da tanımlar. Bu ayarlar ekranı, kullanıcının reklam kimliğini sıfırlamasına ve reklam kişiselleştirme özelliğini devre dışı bırakmasına olanak tanır.
Bu kılavuzda, cihaz başına kullanıcı temelinde tutarlı bir reklam kimliği elde etmek için Advertising ID kitaplığının istemci modülünün nasıl kullanılacağı açıklanmaktadır. Bu kılavuzda daha sonra kitaplığın mimarisine genel bir bakış sunulmaktadır.
İstemci uygulamanızı yapılandırma
Reklam kimliği kitaplığının istemci modülüyle etkileşime geçerek uygulamanız, uygulamayla etkileşime giren kullanıcıyı temsil eden tutarlı bir reklam kimliği alabilir.
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 gösterilir:
38400000-8cf0-11bd-b23e-10b96e40000d
Reklam Kimliği kitaplığı, bu biçimi kullanan kimlikler sağlamak için dönüş değerini 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ı tamamlayın:
AdvertisingIdClient.isAdvertisingIdProviderAvailable()numarasını arayarak bir reklam sağlayıcının kullanılabilir olup olmadığını kontrol edin. Bu yöntemfalsedeğerini 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.AdvertisingIdClient.getAdvertisingIdInfo()işlevini çağırarak reklam kimliği de dahil olmak üzere 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 bir bağlantı zaman aşımı kullanır.
Aşağıdaki kod snippet'inde, reklam sağlayıcıdan reklamcılık kimliğinin ve diğer bilgilerin nasıl alınacağı gösterilmektedir:
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") }
MyAdIdClient
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
Ş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ı, 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ımlamalıdır.
İstemci modülü, reklam kimliklerini ve reklam izlemeyle ilgili kullanıcı tercihlerini almak için sağlayıcı modülüyle iletişim kurar.
Kitaplığın birden fazla sağlayıcıyı kullanma şekli
Bir cihazın aynı anda birden fazla sistem düzeyinde reklam sağlayıcıyı desteklemesi mümkündür. Reklam kimliği kitaplığı bu durumu algılarsa sağlayıcının kullanılabilir olmaya devam ettiğini varsayarak uygulamanızın her zaman aynı sağlayıcıdan bilgi aldığını doğrular. Bu işlem, reklam kimliğinin tutarlı kalmasını sağlar.
Kullanılabilir reklam sağlayıcılar zaman içinde değişirse ve uygulamanız farklı bir reklam tanımlayıcısı sağlayıcısıyla etkileşime girerse diğer tüm istemci uygulamaları da bu yeni sağlayıcıyı kullanmaya başlar. Uygulamanız, kullanıcının reklam kimliğini sıfırlamayı istemesi durumunda ortaya çıkacak davranışla aynı davranışı sergiliyor.
Reklam kimliği sağlayıcı kitaplığı, sağlayıcıları sıralamak için aşağıdaki deterministik sırayı kullanır:
androidx.ads.identifier.provider.HIGH_PRIORITYiznini isteyen sağlayıcılar.- Cihazda en uzun süredir yüklü olan sağlayıcılar.
- Alfabetik sırada ilk görünen sağlayıcılar.