Berdasarkan Izin Pengguna Uni Eropa Google Kebijakan, Anda harus membuat pengungkapan tertentu kepada pengguna Anda di Wilayah Ekonomi Eropa (EEA) serta dengan Inggris Raya dan mendapatkan izin mereka untuk menggunakan cookie atau penyimpanan lokal lainnya, jika diwajibkan secara hukum, dan menggunakan data pribadi (seperti ID iklan) untuk menayangkan iklan. Kebijakan ini mencerminkan persyaratan dalam ePrivacy Directive Uni Eropa dan Peraturan Perlindungan Data Umum (GDPR).
Untuk mendukung penayang dalam memenuhi kewajibannya berdasarkan kebijakan ini, Google menawarkan User Messaging Platform (UMP) SDK. UMP SDK telah diupdate untuk mendukung standar IAB terbaru. Semua konfigurasi ini sekarang dapat dengan mudah ditangani di bidang AdMob privasi & untuk mengirim pesan.
Prasyarat
- Selesaikan panduan Memulai
- Jika Anda sedang menangani persyaratan terkait GDPR, baca Pengaruh persyaratan IAB terhadap Uni Eropa pesan izin
Buat jenis pesan
Buat pesan pengguna dengan salah satu jenis pesan pengguna yang tersedia di bagian Privasi & tab pesan AdMob menggunakan akun layanan. UMP SDK berupaya menampilkan pesan pengguna yang dibuat dari AdMob ID Aplikasi tetapkan dalam project Anda. Jika tidak ada pesan yang dikonfigurasi untuk aplikasi Anda, SDK menghasilkan {i>error<i}.
Untuk detail selengkapnya, lihat Tentang privasi dan pesan.
Menambahkan ID aplikasi
Anda dapat menemukan ID aplikasi di UI AdMob. Tambahkan ID ke dengan cuplikan kode berikut:
Meminta informasi izin
Anda harus meminta pembaruan informasi izin pengguna di setiap aplikasi
luncurkan, menggunakan requestConsentInfoUpdate()
. Ini menentukan
apakah pengguna perlu memberikan izin jika mereka belum melakukannya, atau
jika izin pengguna sudah tidak berlaku.
Berikut adalah contoh cara memeriksa status saat aplikasi dimulai:
@override
void initState() {
super.initState();
// Create a ConsentRequestParameters object.
final params = ConsentRequestParameters();
// Request an update for the consent information.
ConsentInformation.instance.requestConsentInfoUpdate(
params,
() async {
// TODO: Load and present the consent form.
},
(FormError error) {
// Handle the error.
},
);
}
Memuat dan menampilkan formulir izin jika diperlukan
Setelah Anda menerima status izin terbaru, hubungi
loadAndShowConsentFormIfRequired()
di
ConsentForm
untuk memuat formulir izin. Jika
status izin diperlukan, SDK akan memuat formulir dan segera menyajikannya
dari file yang disediakan. callback
dipanggil setelah formulir ditutup. Jika izin tidak diperlukan, callback
akan segera dipanggil.
@override
void initState() {
super.initState();
// Create a ConsentRequestParameters object.
final params = ConsentRequestParameters();
// Request an update for the consent information.
ConsentInformation.instance.requestConsentInfoUpdate(
params,
() async {
ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) {
if (loadAndShowError != null) {
// Consent gathering failed.
}
// Consent has been gathered.
});
},
(FormError error) {
// Handle the error.
},
);
}
Jika Anda perlu melakukan tindakan apa pun setelah pengguna membuat pilihan atau menolak formulir, tempatkan logika itu di callback untuk formulir Anda.
Permintaan iklan
Sebelum meminta iklan di aplikasi, periksa apakah Anda telah memperoleh izin
dari pengguna menggunakan canRequestAds()
. Ada dua
tempat yang harus diperiksa saat
mengumpulkan persetujuan:
- Setelah izin dikumpulkan di sesi saat ini.
- Segera setelah Anda menelepon
requestConsentInfoUpdate()
. Mungkin izin telah diperoleh di sesi sebelumnya. Sebagai latensi praktik terbaiknya, sebaiknya jangan menunggu callback selesai sehingga Anda bisa mulai memuat iklan sesegera mungkin setelah aplikasi diluncurkan.
Jika terjadi error selama proses pengumpulan izin, Anda harus tetap mencoba meminta iklan. UMP SDK menggunakan status izin dari sesi.
class AppExampleState extends State<AppExample> {
// Use a bool to initialize the Mobile Ads SDK and load ads once.
var _isMobileAdsInitializeCalled = false;
@override
void initState() {
super.initState();
// Create a ConsentRequestParameters object.
final params = ConsentRequestParameters();
// Request an update for the consent information.
ConsentInformation.instance.requestConsentInfoUpdate(
params,
() async {
ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) {
if (loadAndShowError != null) {
// Consent gathering failed.
}
// Consent has been gathered.
_initializeMobileAdsSDK();
});
},
(FormError error) {
// Handle the error.
},
);
// Check if you can initialize the Mobile Ads SDK in parallel while
// checking for new consent information. Consent obtained in the
// previous session can be used to request ads.
_initializeMobileAdsSDK();
}
void _initializeMobileAdsSDK() async {
if (_isMobileAdsInitializeCalled) {
return;
}
// Initialize the Mobile Ads SDK if the SDK has gathered consent aligned with
// the app's configured messages.
var canRequestAds = await ConsentInformation.instance.canRequestAds();
if (canRequestAds) {
setState(() {
_isMobileAdsInitializeCalled = true;
});
// Initialize the Mobile Ads SDK.
MobileAds.instance.initialize();
// TODO: Request an ad.
}
}
}
Opsi privasi
Beberapa formulir izin mengharuskan pengguna mengubah izinnya kapan saja. Patuhi langkah-langkah berikut untuk menerapkan tombol opsi privasi jika diperlukan.
Untuk melakukan hal ini:
- Implementasikan elemen UI, seperti tombol di halaman setelan aplikasi Anda, yang dapat memicu formulir opsi privasi.
- Setelah
loadAndShowConsentFormIfRequired()
selesai, periksagetPrivacyOptionsRequirementStatus()
untuk menentukan apakah akan menampilkan elemen UI yang dapat menyajikan formulir opsi privasi. - Saat pengguna berinteraksi dengan elemen UI Anda, panggil
showPrivacyOptionsForm()
untuk menampilkan formulir agar pengguna dapat memperbarui opsi privasi mereka kapan saja.
class AppExampleState extends State<AppExample> {
static const _privacySettingsText = 'Privacy Settings';
// Use a bool to initialize the Mobile Ads SDK and load ads once.
var _isMobileAdsInitializeCalled = false;
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'App Example',
home: Scaffold(
appBar: AppBar(
title: const Text('App Example'),
actions: _isMobileAdsSDKInitialized
// Regenerate the options menu to include a privacy setting.
? _privacySettingsAppBarAction()
: null
),
body: // ...
),
);
}
List<Widget> _privacySettingsAppBarAction() {
return <Widget>[
FutureBuilder(
future: ConsentInformation.instance.isPrivacyOptionsRequired(),
builder: (context, snapshot) {
final bool visibility = snapshot.data ?? false;
return Visibility(
visible: visibility,
child: PopupMenuButton<String>(
onSelected: (String result) {
if (result == _privacySettingsText) {
ConsentForm.showPrivacyOptionsForm((formError) {
if (formError != null) {
debugPrint(
"${formError.errorCode}: ${formError.message}");
}
});
}
},
itemBuilder: (BuildContext context) =>
<PopupMenuEntry<String>>[
const PopupMenuItem<String>(
value: _privacySettingsText,
child: Text(_privacySettingsText))
],
));
})
];
}
}
Pengujian
Jika Anda ingin menguji integrasi di aplikasi selagi mengembangkan, ikuti langkah-langkah ini untuk mendaftarkan perangkat pengujian Anda secara terprogram. Pastikan untuk menghapus kode yang menetapkan ID perangkat pengujian ini sebelum Anda merilis aplikasi.
- Panggil
requestConsentInfoUpdate()
. Periksa output log untuk pesan yang mirip dengan contoh berikut, yang menunjukkan ID perangkat dan cara menambahkannya sebagai perangkat pengujian:
Android
Use new ConsentDebugSettings.Builder().addTestDeviceHashedId("33BE2250B43518CCDA7DE426D04EE231") to set this as a debug device.
iOS
<UMP SDK>To enable debug mode for this device, set: UMPDebugSettings.testDeviceIdentifiers = @[2077ef9a63d2b398840261c8221a0c9b]
Salin ID perangkat pengujian ke papan klip.
Ubah kode Anda untuk ditelepon
ConsentDebugSettings.testIdentifiers
dan teruskan daftar ID perangkat pengujian Anda.ConsentDebugSettings debugSettings = ConsentDebugSettings( testIdentifiers: ["TEST-DEVICE-HASHED-ID"], ); ConsentRequestParameters params = ConsentRequestParameters(consentDebugSettings: debugSettings); ConsentInformation.instance.requestConsentInfoUpdate(params, () async { // ... };
Paksa geografi
UMP SDK menyediakan cara untuk menguji perilaku aplikasi seolah-olah perangkat
yang berlokasi di EEA atau Inggris Raya menggunakan the DebugGeography
field on ConsentDebugSettings
. Perlu diketahui bahwa
setelan debug hanya berfungsi
di perangkat pengujian.
ConsentDebugSettings debugSettings = ConsentDebugSettings(
debugGeography: DebugGeography.debugGeographyEea,
testIdentifiers: ["TEST-DEVICE-HASHED-ID"],
);
ConsentRequestParameters params =
ConsentRequestParameters(consentDebugSettings: debugSettings);
ConsentInformation.instance.requestConsentInfoUpdate(params, () async {
// ...
};
Mereset status izin
Dalam menguji aplikasi dengan UMP SDK, sebaiknya reset
SDK agar Anda bisa melakukan simulasi
pengalaman penginstalan pertama pengguna.
SDK menyediakan metode reset()
untuk melakukannya.
ConsentInformation.instance.reset();