Google AB Kullanıcı İzni kapsamında Politika'yı ihlal etmiyorsa Avrupa Ekonomik Alanı'ndaki (AEA) kullanıcılarınıza belirli açıklamalar Birleşik Krallık'ta oturum açıp çerez veya başka yerel depolama alanlarını kullanmak için ve reklam yayınlamak için kişisel verileri (Reklam Kimliği gibi) kullanmak. Bu politika AB eGizlilik Yönergesi ve (Genel Veri Koruma Yönetmeliği)
Google, yayıncıları bu politika kapsamındaki gereksinimleri yerine getirmeleri konusunda desteklemek amacıyla Kullanıcı Mesajlaşma Platformu (UMP) SDK'sı. UMP SDK'sı, en son IAB standartlarına uyun. Bu yapılandırmaların hepsi artık çok kolay Ad Manager gizlilik ve bahsedeceğim.
Ön koşullar
- Başlangıç kılavuzunu tamamlayın
- GDPR ile ilgili şartlar üzerinde çalışıyorsanız IAB şartları AB kullanıcı rızasını nasıl etkiler? mesajlar
Mesaj türü oluşturma
Kullanıcı mesajlarını kullanılabilir kullanıcı mesajı türleri Gizlilik ve mesajlaşma Reklam Yöneticisi hesap. UMP SDK'sı bir Ad Manager Uygulama Kimliği'nden oluşturulan kullanıcı mesajı birçok yolu vardır. Uygulamanız için herhangi bir mesaj yapılandırılmamışsa SDK, hata döndürür.
Daha fazla bilgi için bkz. . Gizlilik ve mesajlaşma hakkında
Uygulama kimliğini ekleyin
Uygulama kimliğinizi şurada bulabilirsiniz: . Ad Manager kullanıcı arayüzü. . Kimliği aşağıdaki kod snippet'i ile:
Rıza bilgisi isteği
Her uygulamada kullanıcının rıza bilgilerinin güncellenmesini istemelisiniz.
requestConsentInfoUpdate()
kullanarak başlat. Bu, kullanıcıların
Kullanıcı daha önce izin vermediyse izin vermesi gerekip gerekmediğini veya
kullanıcı rızasının geçerlilik süresi sona erdiyse.
Uygulama başlangıcında durumun nasıl kontrol edileceğine ilişkin bir örneği aşağıda bulabilirsiniz:
@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.
},
);
}
.
Gerekirse bir izin formu yükleyip gösterin
En güncel izin durumunu aldıktan sonra
loadAndShowConsentFormIfRequired()
şurada:
ConsentForm
sınıflayın. Öğe
SDK, izin durumu gerekli olduğunda bir form yükleyip anında
kaynak: . callback
aranır form kapatıldıktan sonra. İzin gerekmiyorsa callback
durumunda çalışılır.
@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.
},
);
}
Kullanıcı seçim yaptıktan veya kapatıldıktan sonra herhangi bir işlem yapmanız gerekirse mantığını callbackbölümüne yerleştirin. seçin.
Reklam isteğinde bulun
Uygulamanızda reklam isteğinde bulunmadan önce izin alıp almadığınızı kontrol edin
canRequestAds()
kullanan kullanıcıdan. İki tür
izin alınırken kontrol edilecek yerler:
- Mevcut oturumda izin alındıktan sonra.
-
requestConsentInfoUpdate()
adlı kişiyi aramanızın hemen ardından. Önceki oturumda izin alınmış olabilir. Gecikme olarak en iyi uygulama olarak, geri arama işleminin tamamlanmasını beklememenizi öneririz. Uygulamanız kullanıma sunulduktan hemen sonra reklam yüklemeye başlamanızı öneririz.
İzin alma sürecinde bir hata oluşursa reklam isteğinde bulunmayı deneyin. UMP SDK'sı, Search Ads 360'ta önceki kabul edilir.
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.
}
}
}
Gizlilik seçenekleri
Bazı izin formlarında, kullanıcının istediği zaman iznini değiştirmesi gerekir. Bağlı olun gizlilik seçenekleri düğmesi uygulamak için aşağıdaki adımlara uygulayın.
Bunu yapabilmek için:
- Uygulamanızın ayarlar sayfasındaki bir düğme gibi kullanıcı arayüzü öğesi uygulayın. gizlilik seçenekleri formunu tetikleyebilecek şekilde açıklayabilirsiniz.
- Tamamlandığında
loadAndShowConsentFormIfRequired()
kontrol edin karar vermek için kullanılangetPrivacyOptionsRequirementStatus()
gizlilik seçenekleri formunu sunabilen kullanıcı arayüzü öğesi. - Bir kullanıcı, UI öğenizle etkileşime geçtiğinde
showPrivacyOptionsForm()
Böylece formu göstererek gizlilik seçeneklerini diledikleri zaman güncelleyebilirler.
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))
],
));
})
];
}
}
Test
Geliştirme sürecinde uygulamanızdaki entegrasyonu test etmek isterseniz bu adımları izleyerek test cihazınızı programlı olarak kaydedin. Etiketinizi kaldırdığınızda uygulamanızı yayınlamadan önce bu test cihazı kimliklerini belirleyen koddur.
-
requestConsentInfoUpdate()
numaralı telefonu arayın. Aşağıdaki örneğe benzer bir mesaj için günlük çıkışını kontrol edin: cihaz kimliğinizi ve test cihazı olarak nasıl ekleyeceğinizi gösterir:
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]
Test cihazınızın kimliğini panoya kopyalayın.
Kodunuzu şu şekilde değiştirin: için
ConsentDebugSettings.testIdentifiers
ve pas test cihazı kimliklerinizin listesi.ConsentDebugSettings debugSettings = ConsentDebugSettings( testIdentifiers: ["TEST-DEVICE-HASHED-ID"], ); ConsentRequestParameters params = ConsentRequestParameters(consentDebugSettings: debugSettings); ConsentInformation.instance.requestConsentInfoUpdate(params, () async { // ... };
Bir coğrafi bölgeyi zorunlu kılın
UMP SDK'sı, uygulamanızın davranışını cihaz sanki
AEA veya Birleşik Krallık'ta the DebugGeography
field on ConsentDebugSettings
kullanarak bulabilirsiniz. Lütfen
Hata ayıklama ayarları yalnızca test cihazlarında çalışır.
ConsentDebugSettings debugSettings = ConsentDebugSettings(
debugGeography: DebugGeography.debugGeographyEea,
testIdentifiers: ["TEST-DEVICE-HASHED-ID"],
);
ConsentRequestParameters params =
ConsentRequestParameters(consentDebugSettings: debugSettings);
ConsentInformation.instance.requestConsentInfoUpdate(params, () async {
// ...
};
İzin durumunu sıfırla
Uygulamanızı UMP SDK'sı ile test ederken
kullanıcının ilk yükleme deneyimini simüle edebilmek için SDK durumunu kontrol edin.
SDK, bunu yapmak için reset()
yöntemini sağlar.
ConsentInformation.instance.reset();