Google Kullanıcı Mesajlaşma Platformu (UMP) SDK'sı, gizlilik seçeneklerini yönetmenize yardımcı olur. Daha fazla bilgi için bkz. Gizlilik ve Hakkında .
Mesaj türü oluşturma
Kullanıcı mesajlarını Kullanılabilir kullanıcı mesajı türleri Gizlilik ve mesajlaşma AdMob hesap. UMP SDK'sı bir uygulama kimliğinden oluşturulan AdMob gizlilik mesajı birçok yolu vardır.
Daha fazla bilgi için bkz. Gizlilik ve mesajlaşma hakkında
Uygulama kimliğini ekleyin
Uygulama kimliğinizi şurada bulabilirsiniz: AdMob 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 istek,
şu:
- İzin gerekip gerekmediği. Örneğin, veya önceki rıza kararının süresinin dolduğu anlamına gelir.
- Gizlilik seçenekleri giriş noktasının gerekli olup olmadığı. Bazı gizlilik mesajları uygulamaların, kullanıcıların gizlilik seçeneklerini istedikleri zaman değiştirmesine izin vermesini zorunlu kılmak.
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 privacy message form.
},
(FormError error) {
// Handle the error.
},
);
}
Gerekirse bir gizlilik mesajı formu yükleyin ve gösterin
En güncel izin durumunu aldıktan sonra
loadAndShowConsentFormIfRequired()
tüm formları
kullanıcı izni almanız gerekir. Yüklemenin ardından formlar hemen görünü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.
Gizlilik seçenekleri
Bazı gizlilik mesajı formları, yayıncı tarafından oluşturulan bir gizlilikten sunulur seçenekleri giriş noktasından yararlanarak kullanıcıların gizlilik seçeneklerini istedikleri zaman yönetmelerine olanak tanıyor. Kullanıcılarınızın gizlilik seçeneklerinde hangi mesajı gördüğü hakkında daha fazla bilgi edinmek için giriş noktası, bkz. Kullanılabilir kullanıcı mesajı türleri.
Gizlilik seçenekleri giriş noktası uygulamak için aşağıdaki adımları tamamlayın:
- Çek
getPrivacyOptionsRequirementStatus()
. - Gizlilik seçenekleri giriş noktası Uygulamanıza görünür ve etkileşimde bulunulabilir bir kullanıcı arayüzü öğesi ekleyin.
- Gizlilik seçenekleri formunu şu komutla tetikleyin:
showPrivacyOptionsForm()
Aşağıdaki kod örneğinde bu adımlar gösterilmektedir:
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))
],
));
})
];
}
}
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.
}
}
}
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();