Mendapatkan ID iklan yang dapat di-reset oleh pengguna Bagian dari Android Jetpack.

Untuk melindungi privasi pengguna, praktik terbaiknya adalah semua aplikasi Android menggunakan ID yang dapat direset oleh pengguna. Salah satu ID tersebut adalah ID iklan, yang secara unik mengidentifikasi pengguna tertentu untuk kasus penggunaan iklan, seperti personalisasi iklan.

Untuk mendukung solusi pelacakan iklan standar di seluruh perangkat yang menjalankan aplikasi Anda, Anda dapat menggunakan library ID Iklan. Library yang tersedia di perangkat yang menjalankan Android 4.0 (API level 14) dan yang lebih tinggi ini, menetapkan 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 menentukan intent standar untuk membuka layar setelan yang diterapkan oleh penyedia iklan. Layar setelan ini memungkinkan pengguna mereset ID iklan dan memilih untuk tidak menggunakan 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

Melalui interaksi 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 menormalisasi nilai hasil yang diperlukan untuk memberikan ID dengan menggunakan format ini.

Untuk mengambil ID iklan yang dapat di-reset oleh pengguna untuk 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 melakukan 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 lain 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

Diagram arsitektur
Gambar 1. Arsitektur library ID Iklan

Gambar 1 menunjukkan 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. Implementasi modul ini harus menentukan UI setelan agar pengguna dapat mereset ID iklan dan mengaktifkan/menonaktifkan preferensi pelacakan iklan.

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

Cara library menangani berbagai penyedia

Perangkat dapat mendukung beberapa penyedia iklan tingkat sistem secara bersamaan. Jika mendeteksi situasi ini, library ID Iklan akan memastikan bahwa aplikasi Anda selalu mengambil informasi dari penyedia yang sama, dengan asumsi bahwa penyedia tersebut tetap tersedia. Proses ini membuat ID iklan tetap konsisten.

Jika kumpulan penyedia iklan yang tersedia berubah dari waktu ke waktu dan aplikasi Anda berinteraksi dengan penyedia ID iklan berbeda, semua aplikasi klien lainnya juga akan mulai menggunakan penyedia baru tersebut. Aplikasi Anda menunjukkan perilaku yang sama yang akan terjadi jika pengguna telah meminta untuk mereset ID iklan.

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.