Mendapatkan ID iklan yang dapat direset oleh pengguna Bagian dari Android Jetpack.
Untuk melindungi privasi pengguna, praktik terbaik bagi semua aplikasi Android adalah menangani ID yang dapat di-reset oleh pengguna. Salah satunya adalah ID iklan, yang secara unik mengidentifikasi pengguna tertentu untuk kasus penggunaan iklan, seperti personalisasi iklan.
Untuk mendukung solusi pelacakan iklan berstandar di seluruh perangkat yang menjalankan Anda, Anda dapat menggunakan pustaka ID Iklan. Library ini, yang tersedia di perangkat yang menjalankan Android 4.0 (API level 14) dan yang lebih tinggi, menentukan antarmuka untuk berinteraksi dengan penyedia iklan tingkat sistem. Antarmuka ini memungkinkan aplikasi Anda menerima nilai ID iklan yang konsisten.
Penyedia iklan yang disertakan dengan pustaka ID Iklan juga menentukan intent standar untuk membuka layar setelan yang diterapkan penyedia iklan. Layar setelan ini memungkinkan pengguna mereset ID iklan dan memilih tidak mengikuti personalisasi iklan.
Panduan ini menjelaskan cara menggunakan modul klien library ID Iklan untuk mendapatkan ID iklan yang konsisten per pengguna perangkat. Panduan ini kemudian menyajikan ringkasan arsitektur library.
Mengonfigurasikan aplikasi klien Anda
Dengan berinteraksi dengan modul klien library ID Iklan, aplikasi Anda dapat mengambil ID iklan yang konsisten yang merepresentasikan pengguna yang berinteraksi dengan aplikasi.
ID iklan direpresentasikan menggunakan versi 3 format ID unik universal (UUID) atau format 128-bit yang setara:
38400000-8cf0-11bd-b23e-10b96e40000d
Library ID Iklan menormalkan nilai hasil yang diperlukan untuk memberikan ID dengan format ini.
Untuk mengambil ID iklan yang dapat direset oleh pengguna untuk aplikasi Anda, lengkapi langkah-langkah berikut:
Memeriksa apakah penyedia iklan tersedia dengan memanggil
AdvertisingIdClient.isAdvertisingIdProviderAvailable()
Jika metode ini menampilkanfalse
, aplikasi Anda harus menggunakan cara lain untuk melakukan pelacakan iklan yang diperlukan kasus penggunaan.Dapatkan detail ID iklan, termasuk ID iklan, dengan memanggil
AdvertisingIdClient.getAdvertisingIdInfo()
Library ID Iklan menjalankan metode ini pada thread pekerja dan menggunakan waktu tunggu koneksi selama 10 detik.
Cuplikan kode berikut menunjukkan cara mengambil ID iklan beserta informasi lainnya dari penyedia iklan:
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. } }
Arsitektur library ID Iklan
Gambar 1 menggambarkan struktur library ID Iklan. Library tersebut terdiri dari modul-modul berikut:
- Modul klien, yang merupakan lapisan tipis yang disertakan dalam aplikasi.
- Modul penyedia, yang disediakan oleh produsen perangkat. Untuk mengimplementasikan modul ini, UI setelan harus ditetapkan agar pengguna dapat mereset ID iklan dan menonaktifkan atau mengaktifkan preferensi pelacakan iklan.
Modul klien berkomunikasi dengan modul penyedia untuk mengambil iklan ID dan preferensi pengguna terkait pelacakan iklan.
Cara library menangani berbagai penyedia
Perangkat dapat mendukung beberapa penyedia iklan tingkat sistem secara bersamaan. Jika library ID Iklan mendeteksi situasi ini, library tersebut memastikan bahwa aplikasi Anda selalu mengambil informasi dari penyedia yang sama, dengan asumsi bahwa penyedia tetap tersedia. Proses ini membuat ID iklan tetap konsisten.
Jika sekumpulan penyedia iklan yang tersedia berubah dari waktu ke waktu dan aplikasi Anda berinteraksi dengan penyedia ID iklan yang berbeda, semua aplikasi klien lainnya juga akan menggunakan penyedia baru tersebut. Aplikasi Anda menunjukkan perilaku yang sama seperti yang akan terjadi jika pengguna telah meminta untuk mereset ID iklannya.
Library penyedia ID Iklan menggunakan urutan deterministik berikut untuk memberi peringkat penyedia:
- Penyedia yang telah meminta
izin
androidx.ads.identifier.provider.HIGH_PRIORITY
. - Penyedia yang telah diinstal pada perangkat untuk waktu yang lama.
- Penyedia yang muncul pertama kali dalam urutan abjad.