Google User Messaging Platform (UMP) SDK ابزاری برای حفظ حریم خصوصی و پیامرسانی است که به شما در مدیریت انتخابهای حریم خصوصی کمک میکند. برای اطلاعات بیشتر،درباره حریم خصوصی و پیامرسانی را ببینید.
یک نوع پیام ایجاد کنید
ایجاد پیامهای کاربری با یکی ازانواع پیام کاربر موجوددر برگه حریم خصوصی و پیامرسانی حسابAdMob. UMP SDK تلاش میکند یک پیام حفظ حریم خصوصی ایجاد شده از شناسه برنامه AdMob را در پروژه شما نمایش دهد.
برای جزئیات بیشتر،درباره حریم خصوصی و پیامرسانی را ببینید.
شناسه برنامه را اضافه کنید
میتوانید شناسه برنامه خود را در رابط کاربری AdMobپیدا کنید.شناسه را با قطعه کد زیر به:
درخواست اطلاعات رضایت
باید در هر راهاندازی برنامه، با استفاده از requestConsentInfoUpdate()
درخواست بهروزرسانی اطلاعات رضایت کاربر را بدهید. این درخواست موارد زیر را بررسی می کند:
- آیا رضایت لازم است . به عنوان مثال، برای بار اول رضایت لازم است، یا تصمیم قبلی رضایت منقضی شده است.
- آیا یک نقطه ورود گزینه های حریم خصوصی مورد نیاز است یا خیر . برخی از پیامهای حریم خصوصی به برنامهها نیاز دارند که به کاربران اجازه دهند گزینههای حریم خصوصی خود را در هر زمان تغییر دهند.
در اینجا مثالی از نحوه بررسی وضعیت در شروع برنامه آورده شده است:
@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.
},
);
}
در صورت نیاز فرم پیام حریم خصوصی را بارگیری و ارائه دهید
پس از دریافت بهروزترین وضعیت رضایت، باloadAndShowConsentFormIfRequired()
تماس بگیرید تا فرمهای مورد نیاز برای دریافت رضایت کاربر بارگیری شود. پس از بارگذاری، فرم ها بلافاصله ارائه می شوند.
@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.
},
);
}
اگر پس از انتخاب کاربر یا رد کردن فرم، نیاز به انجام هر کاری دارید، آن منطق را در callbackبرای فرم خود قرار دهید.
گزینه های حفظ حریم خصوصی
برخی از فرمهای پیام حریم خصوصی از نقطه ورود گزینههای حریم خصوصی ارائهشده توسط ناشر ارائه میشوند و به کاربران اجازه میدهند گزینههای حریم خصوصی خود را در هر زمان مدیریت کنند. برای کسب اطلاعات بیشتر در مورد پیامی که کاربران شما در نقطه ورودی گزینه های حریم خصوصی می بینند، بهانواع پیام کاربر موجود مراجعه کنید.
برای پیاده سازی یک نقطه ورود گزینه های حریم خصوصی، مراحل زیر را انجام دهید:
-
getPrivacyOptionsRequirementStatus()
بررسی کنید. - اگر به نقطه ورود گزینه های حریم خصوصی نیاز است، یک عنصر رابط کاربری قابل مشاهده و قابل تعامل به برنامه خود اضافه کنید.
- فرم گزینه های حریم خصوصی را با استفاده از
showPrivacyOptionsForm()
فعال کنید.
مثال کد زیر این مراحل را نشان می دهد:
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))
],
));
})
];
}
}
درخواست تبلیغات
قبل از درخواست تبلیغات در برنامه خود، بررسی کنید که آیا رضایت کاربر را با استفاده از canRequestAds()
دریافت کرده اید یا خیر. هنگام جمع آوری رضایت دو مکان برای بررسی وجود دارد:
- پس از کسب رضایت در جلسه جاری.
- بلافاصله پس از تماس با
requestConsentInfoUpdate()
. امکان دارد در جلسه قبل رضایت گرفته شده باشد. بهعنوان بهترین روش تأخیر، توصیه میکنیم منتظر تکمیل تماس نمانید تا بتوانید در اسرع وقت پس از راهاندازی برنامه، بارگیری تبلیغات را شروع کنید.
اگر در فرآیند جمعآوری رضایت خطایی رخ داد، همچنان باید سعی کنید تبلیغات را درخواست کنید. UMP SDK از وضعیت رضایت جلسه قبل استفاده می کند.
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.
}
}
}
آزمایش کردن
اگر میخواهید یکپارچهسازی برنامه خود را در حین توسعه آزمایش کنید، این مراحل را دنبال کنید تا دستگاه آزمایشی خود را به صورت برنامهنویسی ثبت کنید. قبل از انتشار برنامه، حتماً کدی را که این شناسههای دستگاه آزمایشی را تنظیم میکند حذف کنید.
- با
requestConsentInfoUpdate()
تماس بگیرید. خروجی گزارش را برای پیامی شبیه به مثال زیر بررسی کنید، که شناسه دستگاه شما و نحوه افزودن آن را به عنوان یک دستگاه آزمایشی نشان می دهد:
اندروید
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]
شناسه دستگاه آزمایشی خود را در کلیپ بورد خود کپی کنید.
کد خود را به .
ConsentDebugSettings debugSettings = ConsentDebugSettings( testIdentifiers: ["TEST-DEVICE-HASHED-ID"], ); ConsentRequestParameters params = ConsentRequestParameters(consentDebugSettings: debugSettings); ConsentInformation.instance.requestConsentInfoUpdate(params, () async { // ... };
جغرافی اجباری
UMP SDK راهی برای آزمایش رفتار برنامه شما ارائه میکند که گویی دستگاه در منطقه اقتصادی اروپا یا بریتانیا با استفاده از the DebugGeography
field on ConsentDebugSettings
قرار دارد. توجه داشته باشید که تنظیمات اشکال زدایی فقط در دستگاه های آزمایشی کار می کند.
ConsentDebugSettings debugSettings = ConsentDebugSettings(
debugGeography: DebugGeography.debugGeographyEea,
testIdentifiers: ["TEST-DEVICE-HASHED-ID"],
);
ConsentRequestParameters params =
ConsentRequestParameters(consentDebugSettings: debugSettings);
ConsentInformation.instance.requestConsentInfoUpdate(params, () async {
// ...
};
وضعیت رضایت را بازنشانی کنید
در آزمایش برنامه خود با UMP SDK، ممکن است بازنشانی وضعیت SDK برای شما مفید باشد تا بتوانید اولین تجربه نصب کاربر را شبیه سازی کنید. SDK روش reset()
برای انجام این کار ارائه می دهد.
ConsentInformation.instance.reset();