SDK Nền tảng thông báo cho người dùng (UMP) của Google là một công cụ về quyền riêng tư và thông báo để giúp bạn quản lý các lựa chọn về quyền riêng tư. Để biết thêm thông tin, hãy xem Giới thiệu về Quyền riêng tư & nhắn tin.
Tạo loại thông báo
Tạo thông báo cho người dùng bằng một trong Các loại thông báo cho người dùng hiện có trong Chính sách quyền riêng tư & nhắn tin trong AdMob tài khoản. UMP SDK cố gắng hiển thị thông báo về quyền riêng tư được tạo từ AdMob Mã ứng dụng đã thiết lập trong dự án của bạn.
Để biết thêm thông tin, hãy xem Giới thiệu về quyền riêng tư và thông báo.
Thêm mã ứng dụng
Bạn có thể tìm thấy mã ứng dụng của mình trong Giao diện người dùng AdMob. Thêm mã nhận dạng vào bằng đoạn mã sau:
Yêu cầu cung cấp thông tin về sự đồng ý
Bạn nên yêu cầu cập nhật thông tin về sự đồng ý của người dùng ở mọi ứng dụng
chạy, bằng requestConsentInfoUpdate()
. Yêu cầu này kiểm tra
như sau:
- Liệu sự đồng ý có bắt buộc hay không. Ví dụ: cần có sự đồng ý đối với lần đầu tiên hoặc quyết định đồng ý trước đó đã hết hạn.
- Liệu có bắt buộc phải có điểm truy cập các tuỳ chọn quyền riêng tư hay không. Một số thông báo về quyền riêng tư yêu cầu ứng dụng cho phép người dùng sửa đổi tuỳ chọn quyền riêng tư của họ bất cứ lúc nào.
Dưới đây là ví dụ về cách kiểm tra trạng thái khi ứng dụng khởi động:
@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.
},
);
}
Tải và trình bày biểu mẫu thông báo về quyền riêng tư (nếu cần)
Sau khi bạn nhận được trạng thái đồng ý mới nhất, hãy gọi
loadAndShowConsentFormIfRequired()
để tải mọi biểu mẫu cần thiết
thu thập sự đồng ý của người dùng. Sau khi tải, các biểu mẫu sẽ xuất hiện ngay lập tức.
@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.
},
);
}
Nếu bạn cần thực hiện bất kỳ hành động nào sau khi người dùng đã đưa ra lựa chọn hoặc bỏ qua biểu mẫu, hãy đặt logic đó vào callback cho biểu mẫu của mình.
Tuỳ chọn quyền riêng tư
Một số biểu mẫu thông báo về quyền riêng tư được trình bày dựa trên quyền riêng tư do nhà xuất bản hiển thị điểm truy cập, cho phép người dùng quản lý các tuỳ chọn về quyền riêng tư của họ bất cứ lúc nào. Để tìm hiểu thêm về loại thông báo mà người dùng của bạn nhìn thấy trong phần tuỳ chọn quyền riêng tư điểm vào, xem Các loại thông báo cho người dùng hiện có.
Để triển khai điểm truy cập các tuỳ chọn quyền riêng tư, hãy hoàn tất các bước sau:
- Hãy xem
getPrivacyOptionsRequirementStatus()
. - Nếu điểm truy cập các tuỳ chọn quyền riêng tư là là bắt buộc, hãy thêm thành phần giao diện người dùng có thể nhìn thấy và tương tác vào ứng dụng của bạn.
- Kích hoạt biểu mẫu về các lựa chọn về quyền riêng tư bằng cách sử dụng
showPrivacyOptionsForm()
.
Ví dụ về mã sau đây minh hoạ các bước này:
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))
],
));
})
];
}
}
Yêu cầu quảng cáo
Trước khi yêu cầu quảng cáo trong ứng dụng, hãy kiểm tra xem bạn đã nhận được sự đồng ý hay chưa
từ người dùng đang sử dụng canRequestAds()
. Có hai
các địa điểm cần kiểm tra trong quá trình thu thập sự đồng ý:
- Sau khi thu thập được sự đồng ý trong phiên hiện tại.
- Ngay sau khi bạn gọi
requestConsentInfoUpdate()
. Có thể bạn đã nhận được sự đồng ý trong buổi chia sẻ trước. Dưới dạng độ trễ phương pháp hay nhất, chúng tôi khuyên bạn không nên đợi lệnh gọi lại hoàn tất để bạn có thể hãy bắt đầu tải quảng cáo ngay sau khi ứng dụng của bạn khởi chạy.
Nếu xảy ra lỗi trong quá trình thu thập sự đồng ý, bạn vẫn nên cố yêu cầu quảng cáo. UMP SDK sử dụng trạng thái đồng ý từ trước phiên hoạt động.
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.
}
}
}
Thử nghiệm
Nếu bạn muốn kiểm thử việc tích hợp trong ứng dụng khi bạn đang phát triển, hãy làm theo các bước sau để đăng ký thiết bị thử nghiệm của bạn theo phương thức lập trình. Hãy nhớ gỡ bỏ để đặt các mã thiết bị thử nghiệm này trước khi bạn phát hành ứng dụng của mình.
- Gọi
requestConsentInfoUpdate()
. Kiểm tra đầu ra nhật ký để tìm một thông báo tương tự như ví dụ sau: cho biết mã thiết bị của bạn và cách thêm thiết bị đó làm thiết bị thử nghiệm:
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]
Sao chép mã thiết bị thử nghiệm vào bảng nhớ tạm.
Sửa đổi mã của bạn để gọi
ConsentDebugSettings.testIdentifiers
rồi truyền vào danh sách mã thiết bị thử nghiệm của bạn.ConsentDebugSettings debugSettings = ConsentDebugSettings( testIdentifiers: ["TEST-DEVICE-HASHED-ID"], ); ConsentRequestParameters params = ConsentRequestParameters(consentDebugSettings: debugSettings); ConsentInformation.instance.requestConsentInfoUpdate(params, () async { // ... };
Buộc hiển thị một khu vực địa lý
UMP SDK cung cấp một cách để thử nghiệm hành vi của ứng dụng như thể thiết bị
ở Khu vực kinh tế Châu Âu (EEA) hoặc Vương quốc Anh bằng the DebugGeography
field on ConsentDebugSettings
. Lưu ý rằng
chế độ cài đặt gỡ lỗi chỉ hoạt động trên thiết bị thử nghiệm.
ConsentDebugSettings debugSettings = ConsentDebugSettings(
debugGeography: DebugGeography.debugGeographyEea,
testIdentifiers: ["TEST-DEVICE-HASHED-ID"],
);
ConsentRequestParameters params =
ConsentRequestParameters(consentDebugSettings: debugSettings);
ConsentInformation.instance.requestConsentInfoUpdate(params, () async {
// ...
};
Đặt lại trạng thái đồng ý
Khi thử nghiệm ứng dụng với UMP SDK, bạn có thể thấy hữu ích khi đặt lại
trạng thái của SDK để bạn có thể mô phỏng trải nghiệm cài đặt lần đầu của người dùng.
SDK cung cấp phương thức reset()
để thực hiện việc này.
ConsentInformation.instance.reset();