Google User Messaging Platform (UMP) SDK เป็นเครื่องมือด้านความเป็นส่วนตัวและการรับส่งข้อความที่ ช่วยให้คุณจัดการตัวเลือกความเป็นส่วนตัวได้ สำหรับข้อมูลเพิ่มเติม โปรดดู เกี่ยวกับข้อมูลส่วนบุคคลและ การรับส่งข้อความ วันที่
สร้างประเภทข้อความ
สร้างข้อความสำหรับผู้ใช้ด้วย ประเภทข้อความสำหรับผู้ใช้ที่ใช้ได้ ภายใต้ความเป็นส่วนตัวและ แท็บการรับส่งข้อความ Ad Manager ของคุณได้ UMP SDK พยายามแสดง ประกาศเกี่ยวกับความเป็นส่วนตัวที่สร้างจาก Ad Manager รหัสแอปพลิเคชัน ที่ตั้งไว้ในโปรเจ็กต์
ดูรายละเอียดเพิ่มเติมได้ที่ เกี่ยวกับความเป็นส่วนตัวและการรับส่งข้อความ
เพิ่มรหัสแอปพลิเคชัน
คุณดูรหัสแอปพลิเคชันได้ใน UI ของ Ad Manager เพิ่มบัตรประจำตัวลงใน วันที่ ด้วยข้อมูลโค้ดต่อไปนี้
คำขอข้อมูลความยินยอม
คุณควรขออัปเดตข้อมูลความยินยอมของผู้ใช้ในทุกแอป
เปิดโดยใช้ 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()
- หากจุดแรกเข้าของตัวเลือกความเป็นส่วนตัวคือ ให้เพิ่มองค์ประกอบ UI ที่มองเห็นได้และโต้ตอบได้ลงในแอป
- เรียกแบบฟอร์มตัวเลือกความเป็นส่วนตัวโดยใช้
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()
มี 2 แบบ
สิ่งที่ต้องตรวจสอบขณะรวบรวมความยินยอม:
- หลังจากรวบรวมความยินยอมในเซสชันปัจจุบัน
- ทันทีที่คุณโทรหา
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()
ตรวจสอบเอาต์พุตของบันทึกสำหรับข้อความที่คล้ายกับตัวอย่างต่อไปนี้ แสดงรหัสอุปกรณ์และวิธีเพิ่มรหัสเป็นอุปกรณ์ทดสอบ
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]
คัดลอกรหัสอุปกรณ์ทดสอบไปยังคลิปบอร์ด
แก้ไขโค้ด โทร
ConsentDebugSettings.testIdentifiers
และข้ามเข้า รายการรหัสอุปกรณ์ทดสอบConsentDebugSettings debugSettings = ConsentDebugSettings( testIdentifiers: ["TEST-DEVICE-HASHED-ID"], ); ConsentRequestParameters params = ConsentRequestParameters(consentDebugSettings: debugSettings); ConsentInformation.instance.requestConsentInfoUpdate(params, () async { // ... };
บังคับระบุภูมิศาสตร์
UMP SDK ให้คุณทดสอบลักษณะการทำงานของแอปได้เสมือนว่าอุปกรณ์
ที่อยู่ใน EEA หรือสหราชอาณาจักรโดยใช้ 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();