Meminta Persetujuan dari Pengguna Eropa

Menurut Kebijakan Izin Pengguna Uni Eropa Google, Anda harus membuat pengungkapan tertentu kepada pengguna di Wilayah Ekonomi Eropa (EEA) dan mendapatkan izin mereka untuk menggunakan cookie atau penyimpanan lokal lainnya, jika diwajibkan secara hukum, dan untuk menggunakan data pribadi (seperti AdID) guna menayangkan iklan. Kebijakan ini mencerminkan persyaratan dalam ePrivacy Directive dan General Data Protection Regulation (GDPR) Uni Eropa.

Untuk mendukung penayang dalam memenuhi kewajibannya berdasarkan kebijakan ini, Google menawarkan SDK Izin. Consent SDK adalah library open source yang menyediakan fungsi utilitas untuk mengumpulkan izin dari pengguna Anda. Kode sumber lengkap tersedia diGitHub.

Iklan yang ditayangkan oleh Google dapat dikategorikan sebagai dipersonalisasi atau tidak dipersonalisasi, keduanya memerlukan izin dari pengguna di EEA. Secara default, permintaan iklan ke Google menayangkan iklan yang dipersonalisasi, dengan pilihan iklan berdasarkan data yang dikumpulkan sebelumnya. Google juga mendukung konfigurasi permintaan iklan untuk menayangkan iklan yang tidak dipersonalisasi. Pelajari iklan yang dipersonalisasi dan yang tidak dipersonalisasi lebih lanjut.

Panduan ini menjelaskan cara menggunakan Consent SDK untuk mendapatkan izin dari pengguna. Bagian ini juga menjelaskan cara meneruskan izin ke Google Mobile Ads SDK setelah Anda mendapatkan izin.

Prasyarat

Aplikasi dapat mengimpor Consent SDK dengan dependensi Gradle yang mengarah ke repositori Maven Google. Untuk menggunakan repositori tersebut, Anda harus mereferensikannya dalam file build.gradle level project aplikasi. Buka file Anda dan cari bagian allprojects:

Contoh build.gradle level project (kutipan)

allprojects {
    repositories {
        google()
        jcenter()
    }
}

Tambahkan perintah google() di atas jika belum ada.

Selanjutnya, buka file build.gradle tingkat aplikasi untuk aplikasi Anda, lalu cari bagian "dependensi".

Contoh build.gradle tingkat aplikasi (kutipan)

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.ads.consent:consent-library:1.0.6'
}

Tambahkan baris yang dicetak tebal di atas, yang menginstruksikan Gradle untuk mengambil versi terbaru SDK Izin. Setelah selesai, simpan file dan lakukan sinkronisasi Gradle.

Sebelum menggunakan metode lain di Consent SDK, Anda harus memperbarui status izin untuk memastikan Consent SDK memiliki informasi terbaru mengenai penyedia teknologi iklan yang Anda pilih di UIAdMob . Jika daftar penyedia teknologi iklan berubah sejak pengguna terakhir memberikan izin, status izin akan disetel kembali ke status tidak diketahui.

Jika Anda tidak menggunakan mediasi

Jika tidak menggunakan mediasi, Anda memiliki dua opsi untuk menerapkan Consent SDK guna mengumpulkan izin.

Salah satu opsi adalah menggunakan SDK Izin untuk menampilkan formulir izin yang dirender Google kepada pengguna Anda. Formulir izin menampilkan daftar penyedia teknologi iklan yang telah Anda pilih di UI AdMob. Consent SDK menyimpan respons izin pengguna.

Opsi lainnya adalah menggunakan Consent SDK untuk mengambil daftar lengkap penyedia teknologi iklan secara dinamis dari AdMob, seperti yang dijelaskan dalam pengumpulan izin yang dikelola penayang. Namun, dalam kasus ini, Anda harus menentukan bagaimana daftar penyedia harus tersedia bagi pengguna dan menyajikan formulir izin Anda sendiri kepada pengguna.

Setelah pengguna membuat pilihan izin, Anda dapat meminta SDK Izin untuk menyimpan pilihan izin pengguna seperti yang dijelaskan dalam Menyimpan izin terkelola penayang.

Setelah mengumpulkan izin, jika pengguna setuju untuk hanya menerima iklan yang tidak dipersonalisasi, Anda harus meneruskan izin ke Google Mobile Ads SDK.

Jika Anda menggunakan AdMob mediasi

Anda dapat menggunakan Consent SDK untuk secara dinamis mengambil daftar lengkap penyedia teknologi iklan dari AdMob, seperti yang dijelaskan dalam pengumpulan izin yang dikelola penayang. Anda perlu menentukan penyedia teknologi iklan tambahan dari jaringan iklan lain yang perlu ditampilkan kepada pengguna untuk mendapatkan izin.

Sebagai developer aplikasi, Anda harus mengumpulkan izin pengguna untuk penyedia teknologi iklan yang ditampilkan oleh Consent SDK dan penyedia dari jaringan iklan lainnya. Anda juga harus menyimpan respons izin pengguna secara manual dan meneruskan izin ke Google Mobile Ads SDK jika pengguna mengizinkan untuk hanya menerima iklan yang tidak dipersonalisasi.

Saat ini Google tidak dapat memperoleh dan menangani izin untuk jaringan mediasi, sehingga Anda harus mendapatkan dan menangani izin untuk setiap jaringan iklan secara terpisah. Baca panduan integrasi setiap partner mediasi untuk mengetahui detail penerapan.

Perbarui status izin

Saat menggunakan Consent SDK, sebaiknya Anda menentukan status izin pengguna pada setiap peluncuran aplikasi. Untuk melakukannya, panggil requestConsentInfoUpdate() pada instance ConsentInformation.

import com.google.ads.consent.*;

public class MainActivity extends Activity {
    ...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        ConsentInformation consentInformation = ConsentInformation.getInstance(context);
        String[] publisherIds = {"pub-0123456789012345"};
        consentInformation.requestConsentInfoUpdate(publisherIds, new ConsentInfoUpdateListener() {
            @Override
            public void onConsentInfoUpdated(ConsentStatus consentStatus) {
                 // User's consent status successfully updated.
            }

            @Override
            public void onFailedToUpdateConsentInfo(String errorDescription) {
                 // User's consent status failed to update.
            }
        });
        ...
    }
    ...
}

Panggilan ke requestConsentInfoUpdate() memerlukan dua argumen:

  • Array ID penayang valid dan sepenuhnya diaktifkan yang digunakan aplikasi Anda untuk meminta iklan. Temukan ID penayang Anda.

  • Instance ConsentInfoUpdateListener.

Jika informasi izin berhasil diperbarui, status izin yang diperbarui akan diberikan melalui metode onConsentInfoUpdated() dari ConsentInfoUpdateListener. ConsentStatus yang ditampilkan mungkin memiliki nilai yang tercantum di bawah:

Status Izin Definisi
ConsentStatus.PERSONALIZED Pengguna telah memberikan izin untuk iklan yang dipersonalisasi.
ConsentStatus.NON_PERSONALIZED Pengguna telah memberikan izin untuk iklan yang tidak dipersonalisasi.
ConsentStatus.UNKNOWN Pengguna tidak memberikan atau menolak izin untuk iklan yang dipersonalisasi atau yang tidak dipersonalisasi.

Setelah informasi izin berhasil diperbarui, Anda juga dapat memeriksa ConsentInformation.getInstance(context).isRequestLocationInEeaOrUnknown() untuk mengetahui apakah pengguna berada di Wilayah Ekonomi Eropa atau lokasi permintaan tidak diketahui.

Jika metode isRequestLocationInEeaOrUnknown() menampilkan false, pengguna tidak berada di Wilayah Ekonomi Eropa dan izin tidak diperlukan berdasarkan Kebijakan Izin Pengguna Uni Eropa. Anda dapat membuat permintaan iklan ke Google Mobile Ads SDK.

Jika metode isRequestLocationInEeaOrUnknown() menampilkan true:

  • Jika ConsentStatus yang ditampilkan adalah PERSONALIZED atau NON_PERSONALIZED, pengguna telah memberikan izin. Anda kini dapat meneruskan izin ke Google Mobile Ads SDK.

  • Jika ConsentStatus yang ditampilkan adalah UNKNOWN, lihat bagian Mengumpulkan izin di bawah, yang menjelaskan penggunaan metode utilitas untuk mengumpulkan izin.

Google SDK Izin. menyediakan dua cara untuk mengumpulkan izin dari pengguna:

Jangan lupa untuk memberi pengguna opsi Mengubah atau mencabut izin.

Formulir izin yang dirender Google adalah formulir layar penuh yang dapat dikonfigurasi yang ditampilkan di atas konten aplikasi Anda. Anda dapat mengonfigurasi formulir untuk menampilkan kombinasi opsi berikut kepada pengguna:

  • Persetujuan untuk melihat iklan yang dipersonalisasi
  • Persetujuan untuk melihat iklan yang tidak dipersonalisasi
  • Menggunakan versi berbayar dari aplikasi, alih-alih melihat iklan

Anda harus meninjau teks izin dengan cermat: pesan yang muncul secara default adalah pesan yang mungkin sesuai jika Anda menggunakan Google untuk memonetisasi aplikasi; tetapi kami tidak dapat memberikan saran hukum terkait teks izin yang sesuai untuk Anda. Untuk memperbarui teks izin pada formulir izin yang dirender Google, ubah file consentform.html yang disertakan dalam Consent SDK sesuai kebutuhan.

Formulir izin yang dirender Google dikonfigurasi dan ditampilkan menggunakan class ConsentForm. Kode berikut menunjukkan cara membuat ConsentForm dengan ketiga opsi izin:

URL privacyUrl = null;
try {
    // TODO: Replace with your app's privacy policy URL.
    privacyUrl = new URL("https://www.your.com/privacyurl");
} catch (MalformedURLException e) {
    e.printStackTrace();
    // Handle error.
}
ConsentForm form = new ConsentForm.Builder(context, privacyUrl)
    .withListener(new ConsentFormListener() {
        @Override
        public void onConsentFormLoaded() {
            // Consent form loaded successfully.
        }

        @Override
        public void onConsentFormOpened() {
            // Consent form was displayed.
        }

        @Override
        public void onConsentFormClosed(
                ConsentStatus consentStatus, Boolean userPrefersAdFree) {
            // Consent form was closed.
        }

        @Override
        public void onConsentFormError(String errorDescription) {
            // Consent form error.
        }
    })
    .withPersonalizedAdsOption()
    .withNonPersonalizedAdsOption()
    .withAdFreeOption()
    .build();

Metode di atas menyiapkan formulir izin yang dirender Google dengan opsi berikut:

withListener()
Mendaftarkan pemroses untuk ConsentForm. Setiap metode yang dapat diganti di ConsentFormListener sesuai dengan peristiwa dalam siklus proses formulir izin.
Metode yang dapat diganti
onConsentFormLoaded Formulir persetujuan berhasil dimuat.
onConsentFormError Formulir izin gagal dimuat. Parameter errorDescription memberikan deskripsi error.
onConsentFormOpened Formulir izin dibuka.
onConsentFormClosed Formulir izin ditutup. Parameter metode memberikan informasi berikut:
  • consentStatus adalah nilai ConsentStatus yang menjelaskan status izin pengguna yang diperbarui.
  • userPrefersAdFree memiliki nilai true saat pengguna memilih untuk menggunakan versi aplikasi berbayar, bukan melihat iklan.
withPersonalizedAdsOption()
Menunjukkan bahwa formulir izin harus menampilkan opsi iklan yang dipersonalisasi.
withNonPersonalizedAdsOption()
Menunjukkan bahwa formulir izin harus menampilkan opsi iklan yang tidak dipersonalisasi.
withAdFreeOption()
Menunjukkan bahwa formulir izin harus menampilkan opsi aplikasi bebas iklan.

Setelah Anda membuat objek ConsentForm, muat formulir izin dengan memanggil metode load() ConsentForm, seperti yang ditunjukkan di bawah:

form.load();

Untuk menampilkan formulir izin yang dirender Google kepada pengguna, panggil show() pada instance ConsentForm, seperti yang ditunjukkan di bawah:

form.show();

Setelah pengguna memilih opsi dan menutup formulir, Consent SDK akan menyimpan pilihan pengguna dan mengaktifkan peristiwa onConsentFormClosed. Anda dapat memproses peristiwa ini dan meneruskan izin ke Google Mobile Ads SDK.

Pengumpulan izin yang dikelola penayang

Jika Anda memilih untuk mengumpulkan izin sendiri, Anda dapat menggunakan metode getAdProviders() dari class ConsentInformation untuk mendapatkan penyedia teknologi iklan yang terkait dengan ID penayang yang digunakan di aplikasi Anda. Perhatikan bahwa izin diperlukan untuk daftar lengkap penyedia teknologi iklan yang dikonfigurasi untuk ID penayang Anda.

Sebelum dapat memanggil getAdProviders(), Anda harus menunggu metode onConsentInfoUpdate() dari ConsentInfoUpdateListener seperti yang dijelaskan di bagian Memperbarui status izin.

List<AdProvider> adProviders =
    ConsentInformation.getInstance(context).getAdProviders();

Anda kemudian dapat menggunakan daftar penyedia teknologi iklan untuk mendapatkan izin sendiri.

Setelah mendapatkan izin, catat ConsentStatus yang sesuai dengan respons pengguna menggunakan metode setConsentStatus() dari class ConsentInformation.

ConsentInformation.getInstance(context)
    .setConsentStatus(ConsentStatus.PERSONALIZED);

Setelah melaporkan izin ke Consent SDK, Anda dapat meneruskan izin ke Google Mobile Ads SDK.

Untuk mengizinkan pengguna memperbarui izinnya, cukup ulangi langkah-langkah yang diuraikan di bagian Kumpulkan izin saat pengguna memilih untuk memperbarui status izinnya.

Jika penayang mengetahui bahwa pengguna berusia di bawah usia dewasa, semua permintaan iklan harus menetapkan TFUA (Tag Untuk Pengguna yang berusia di bawah Usia Dewasa di Eropa). Untuk menyertakan tag ini di semua permintaan iklan yang dibuat dari aplikasi Anda, panggil setTagForUnderAgeOfConsent(true). Setelan ini berlaku untuk semua permintaan iklan di masa mendatang.

ConsentInformation.getInstance(context).setTagForUnderAgeOfConsent(true);

Setelah setelan TFUA diaktifkan, formulir izin yang dirender Google akan gagal dimuat. Semua permintaan iklan yang menyertakan TFUA akan dibuat tidak memenuhi syarat untuk iklan yang dipersonalisasi dan pemasaran ulang. TFUA menonaktifkan permintaan ke penyedia teknologi iklan pihak ketiga, seperti piksel pengukuran iklan dan server iklan pihak ketiga.

Untuk menghapus TFUA dari permintaan iklan, panggil setTagForUnderAgeOfConsent(false).

Pengujian

Consent SDK memiliki perilaku yang berbeda, bergantung pada nilaiConsentInformation.getInstance(context).isRequestLocationInEeaOrUnknown(). Misalnya, formulir izin gagal dimuat jika pengguna tidak berada di EEA.

Untuk mempermudah pengujian aplikasi Anda di dalam dan di luar EEA, Consent SDK mendukung opsi debug yang dapat Anda tetapkan sebelum memanggil metode lain di Consent SDK.

  1. Ikuti petunjuk di bagian memperbarui status izin untuk memanggil requestConsentInfoUpdate. Lalu jalankan aplikasi Anda. Periksa output logcat untuk menemukan log berikut:

    I/ConsentInformation: Use
    ConsentInformation.getInstance(context).addTestDevice("33BE2250B43518CCDA7DE426D04EE231")
    to get test ads on this device.
  2. Tetapkan perangkat Anda sebagai perangkat pengujian menggunakan ID iklan dari logcat:

    ConsentInformation.getInstance(context).addTestDevice("33BE2250B43518CCDA7DE426D04EE231");
  3. Terakhir, panggil setDebugGeography untuk menetapkan geografi pilihan Anda untuk tujuan pengujian.

    // Geography appears as in EEA for test devices.
    ConsentInformation.getInstance(context).
        setDebugGeography(DebugGeography.DEBUG_GEOGRAPHY_EEA);
    // Geography appears as not in EEA for debug devices.
    ConsentInformation.getInstance(context).
        setDebugGeography(DebugGeography.DEBUG_GEOGRAPHY_NOT_EEA);

Setelah menyelesaikan langkah-langkah ini, panggilan untuk memperbarui status izin akan mempertimbangkan geografi debug Anda.

Kode di bagian ini dapat digunakan dengan SDK Iklan Seluler Google versi apa pun. Itu juga dapat digunakan terlepas dari apakah Anda menggunakan SDK Persetujuan untuk mengumpulkan persetujuan.

Perilaku default SDK Iklan Seluler Google adalah menayangkan iklan yang dipersonalisasi. Jika pengguna telah menyetujui untuk hanya menerima iklan yang tidak dipersonalisasi, Anda dapat mengonfigurasi objek AdRequest untuk menentukan bahwa hanya iklan yang tidak dipersonalisasi yang harus diminta. Kode berikut menyebabkan iklan yang tidak dipersonalisasi diminta terlepas dari apakah pengguna berada di EEA atau tidak:

Bundle extras = new Bundle();
extras.putString("npa", "1");

AdRequest request = new AdRequest.Builder()
    .addNetworkExtrasBundle(AdMobAdapter.class, extras)
    .build();

Jika iklan yang tidak dipersonalisasi diminta, URL permintaan iklan saat ini menyertakan &npa=1 . Namun, perhatikan bahwa ini adalah detail penerapan internal Google Mobile Ads SDK dan dapat berubah.

Tunda pengukuran aplikasi (opsional)

Secara default, Google Mobile Ads SDK melakukan inisialisasi pengukuran aplikasi dan mulai mengirimkan data peristiwa tingkat pengguna ke Google segera saat aplikasi dimulai. Perilaku inisialisasi ini memastikan Anda dapat mengaktifkan metrik pengguna AdMob tanpa membuat perubahan kode tambahan.

Namun, jika aplikasi Anda memerlukan izin pengguna sebelum peristiwa ini dapat dikirim, Anda dapat menunda pengukuran aplikasi hingga Anda secara eksplisit menginisialisasi Mobile Ads SDK atau memuat iklan.

Untuk menunda pengukuran aplikasi, tambahkan tag <meta-data> berikut dalam AndroidManifest.xml Anda.

<manifest>
     <application>
        <!-- Delay app measurement until MobileAds.initialize() is called. -->
        <meta-data
            android:name="com.google.android.gms.ads.DELAY_APP_MEASUREMENT_INIT"
            android:value="true"/>
    </application>
</manifest>

FAQ

Berapa banyak penyedia teknologi iklan yang didukung oleh SDK Izin?
Consent SDK tidak memberlakukan batasan pada jumlah penyedia teknologi iklan yang diaktifkan oleh penayang.
Apakah daftar penyedia teknologi iklan yang ditampilkan oleh SDK diperbarui secara otomatis jika saya mengubah pilihan di AdMob UI?
Ya, jika Anda mengubah daftar penyedia teknologi iklan di AdMob UI, perubahan tersebut akan diterapkan ke server iklan Google dalam waktu sekitar satu jam.