Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Mendapatkan ID iklan yang dapat di-reset oleh pengguna

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 aplikasi Anda, Anda dapat menggunakan library ID Iklan yang merupakan bagian dari Jetpack. Library yang tersedia di perangkat yang menjalankan Android 4.0 (API level 14) dan lebih tinggi ini, 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 library ID Iklan juga menetapkan intent standar untuk membuka layar setelan yang diterapkan oleh penyedia iklan. Layar setelan ini memungkinkan pengguna menyetel ulang ID iklan dan memilih tidak mengikuti personalisasi iklan.

Panduan ini menjelaskan cara menggunakan modul klien library ID Iklan agar memperoleh ID iklan yang konsisten berdasarkan per pengguna perangkat. Panduan ini akan menyajikan ringkasan arsitektur library.

Mengonfigurasikan aplikasi klien Anda

Melalui interaksi dengan modul klien dari library ID Iklan, aplikasi Anda dapat mengambil ID iklan yang konsisten yang merepresentasikan pengguna yang berinteraksi dengan aplikasi Anda.

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 di-reset pengguna bagi aplikasi Anda, selesaikan langkah-langkah berikut:

  1. Periksa apakah penyedia iklan tersedia dengan memanggil AdvertisingIdClient.isAdvertisingIdProviderAvailable(). Jika metode ini menampilkan false, aplikasi Anda harus menggunakan cara lain untuk menjalankan kasus penggunaan pelacakan iklan yang diperlukan.

  2. 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

    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
                }

                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 ads 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 ads 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 get 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 ads 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 ads use cases.
        }
    }
    

Arsitektur library ID Iklan

Diagram arsitektur
Gambar 1. Arsitektur library ID Iklan

Diagram yang ditampilkan pada Gambar 1 menggambarkan bagaimana library ID Iklan disusun. 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 menyetel ulang ID iklan dan menonaktifkan atau mengaktifkan preferensi pelacakan iklan.

Modul klien berkomunikasi dengan modul penyedia untuk mengambil ID iklan dan preferensi pengguna terkait pelacakan iklan.

Cara library menangani berbagai penyedia

Suatu perangkat mungkin mendukung beberapa penyedia iklan tingkat sistem dalam waktu yang sama. 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 sehingga 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 terjadi jika pengguna telah meminta untuk menyetel ulang ID iklannya.

Library penyedia ID Iklan menggunakan urutan deterministik berikut untuk memberi peringkat penyedia:

  1. Penyedia yang telah meminta izin androidx.ads.identifier.provider.HIGH_PRIORITY.
  2. Penyedia yang telah diinstal pada perangkat untuk waktu yang lama.
  3. Penyedia yang muncul pertama kali dalam urutan abjad.