Skip to content

欧盟地区用户意见征求政策

根据 Google 欧盟地区用户意见征求政策,您必须向位于欧洲经济区 (EEA) 和英国境内的用户披露相关信息,在法律有相应要求的情况下,必须就 Cookie 或其他本地存储方式的使用征得他们的同意,并使用个人数据(例如 AdID)来投放广告。此政策反映了欧盟《电子隐私指令》和《一般数据保护条例》(GDPR) 的要求。

为了帮助发布商履行此政策规定的职责,Google 提供了 User Messaging Platform (UMP) SDK。UMP SDK 现已更新,支持最新的 IAB 标准。

1.将UMP管理类加入项目中

将Demo中的 GoogleMobileAdsConsentManager类加入到项目中

2.在主ViewController中调用

在主ViewController ViewDidLoad中调用展示

objc
- (void)loadAndShowConsentFormIfRequired{
    [[GoogleMobileAdsConsentManager sharedInstance] gatherConsentFromConsentPresentationViewController:self
                                                                              consentGatheringComplete:^(NSError * _Nullable error) {
        
    }];    
}

当用户是欧盟用户,并且没有选择过隐私授权表单,调用此方法会弹出以下表单界面,当用户选择同意或者拒绝之后,在13个月的有效期内此方法不会再弹出隐私授权表单。所以建议每次都调用此方法,当失效后又会弹出让用户自己选择。

IMG_8026

3.隐私设置选项

意见征求表单要求允许用户随时修改其选择。请按照以下步骤实现隐私设置选项按钮。建议将按钮加到App设置里面,

image-20231208085216474

注意,这个选项是在已经弹出过征求表单窗口后的设备才显示,可根据以下代码判断是否显示按钮

objective-c
if(GoogleMobileAdsConsentManager.sharedInstance.isPrivacyOptionsRequired){
	//显示隐私按钮,允许用户再次修改同意声明
}else{
 //不显示 
}

调用以下方法再次弹出修改征求表单窗口,表单和第一次弹出的显示一样,但方法不同,此方法只能用于让用户修改隐私选择。

objc
- (void)showPrivacyForm {
    [GoogleMobileAdsConsentManager.sharedInstance
        presentPrivacyOptionsFormFromViewController:self
                                  completionHandler:^(NSError *_Nullable formError) {
                                    if (formError) {
                                        //错误,不能显示
                                    }
    }];
}

4.如何测试

如果您希望在开发过程中测试应用中的集成,请按照以下步骤以编程方式注册测试设备

1).先调用 loadAndShowConsentFormIfRequired

2).检查日志输出中是否有类似如下的消息,该消息显示了您的设备 ID 以及如何将其添加为测试设备:

<UMP SDK>To enable debug mode for this device, set: UMPDebugSettings.testDeviceIdentifiers = @[@“”]

在日志中搜索To enable debug mode for this device 找到测试设备ID

image-20231207165157653

3).修改代码,调用 UMPDebugSettings().testDeviceIdentifiers ,并传入您的测试设备 ID ,并指定为欧盟地区

objc
UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
UMPDebugSettings *debugSettings = [[UMPDebugSettings alloc] init];
debugSettings.testDeviceIdentifiers = @[ @"80B85A25-92FE-41B7-B594-BD8D2141F12C" ];
debugSettings.geography = UMPDebugGeographyEEA;
parameters.debugSettings = debugSettings;
// Include the UMPRequestParameters in your consent request.
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                        completionHandler:^(NSError *_Nullable error){
                          ...
}];

4).网络必须要翻墙, 不翻墙显示不出来。

注意:模拟器默认是测试设备,因此无需添加到您的设备 ID 列表中。

注意:在发布应用之前,请务必移除设置这些测试设备 ID 的代码。

注意:在发布应用之前,请务必移除设置这些测试设备 ID 的代码。