Google UMP 适配使用指南
[
背景
](#背景)
自 2024 年 1 月 16 日起,使用 Google AdSense、Ad Manager 或 AdMob 的发布商和开发者在面向欧洲经济区或英国的用户投放广告时,必须使用通过 Google 认证且已与 IAB 的透明度和用户意见征求框架 (TCF) 相集成的意见征求管理平台 (CMP)。
您可以通过TopOn提供的接口来实现UMP流程,请参考以下步骤完整实现:
[
1. 配置UMP
](#1._配置UMP)[
1.1 在Admob后台启用UMP
](#1.1_在Admob后台启用UMP)
- 访问Admob后台登录Admob账号
-在 AdMob 中添加你的应用(如果您尚未添加应用) - 点击**“隐私权和消息”**
- 点击**“欧洲法规-管理”**
- 点击**“创建消息”**,等待GDPR消息页面打开
- 在GDPR消息页面中点击右上角**“选择应用”**,选择您想要显示GDPR信息的应用
- 选择您想要显示消息的语言
- 在**“定位”**栏目中选择“须遵守 GDPR 的国家/地区(EEA 和 UK)”选项
以下配置可以提高用户同意GDPR概率
-
“用户选项-关闭(不同意)”选择关闭
- 样式调整,选择**“样式“栏目
-按钮栏目下的“次要颜色“调整为白色(#ffffff)
-按钮栏目下的“次要字体颜色“**调整为灰色(#6e6e6e)
- 样式调整,选择**“样式“栏目
-
调整后整体效果如下图

最后点击右上角**“发布”**即可。
[
1.2 自行指定的广告合作伙伴
](#1.2_自行指定的广告合作伙伴)
默认情况下,Google 可能不会在您的 GDPR 消息中显示您项目中集成的所有广告平台。 如果您未能包含这些广告平台,可能会对您的广告收入产生不利影响。 请按照本部分中的步骤操作,确保您项目中集成的所有广告平台都出现在 GDPR 消息中。
自定义 GDPR 消息中显示哪些广告合作伙伴:
-
在Admob后台**“隐私权和消息”**中点击“GDPR设置”,打开GDPR设置

-
点击**“检查您的广告合作伙伴”**部分下的编辑图标 (
) -
参考下方表格,勾选您项目中集成的所有广告平台
| Google Name
|
TopOn SDK Network
Facebook Meta
复制
| | AppLovin Corp |
Applovin
复制
| | ironSource Mobile |
IronSource
复制
| | InMobi Choice | InMobi | | InMobi Choice | InMobi | | BIGOAds |
Bigo
复制
| | Chartboost | Chartboost | |
UnityAds
复制
| Unity Ads | | Ogury Ltd | Ogury | |
AdColony
复制
|
AdColony
复制
| | Google |
Admob
复制
| |
StartApp
复制
|
Start.io【StartApp】
复制
| | Verve Group |
PubNative【Verve】
复制
| |
Tapjoy
复制
|
Tapjoy
复制
| | Liftoff |
Vungle
复制
| |
F@N communications
复制
| Nend | |
Fyber
|
Fyber
| |
Kidoz
复制
|
Kidoz
复制
| | Mobvista/Mintegral |
Mintegral
复制
|
**备注:**其余不在此表格中的广告平台如Pangle、Maio、MyTarget、Yandex等,由于不在Admob GDPR广告合作伙伴列表中,TopOn内部会使用弹窗同意结果设置这些广告平台GDPR上报等级
-
点击**“确认”**
-
点击GDPR设置页面最底部的**“保存”**按钮
注意:如果有弹出“重新向所有符合条件的用户征求意见?”弹窗时需要选择“重新提示”**
**
[
1.3 Admob后台设置IDFA
](#1.3_Admob后台设置IDFA)

[
1.4 代码流程说明
](#1.4_代码流程说明)

[
1.5 添加**代码(请先完成上面的流程配置)**
](#1.5_添加代码(请先完成上面的流程配置))
present方式,请勿在此时present您的窗口
若不传入ViewController参数,默认会自动获取并显示。
温馨提示,请不要在
- (**BOOL**)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions中使用,因为苹果要求在
applicationDidBecomeActive后之后调用ATT申请。以下代码适用于全球范围发行的应用。
//导入头文件
#import <AnyThinkSDK/ATAPI.h>
#import <AppTrackingTransparency/AppTrackingTransparency.h>
- (void)initFlow {
[[ATAPI sharedInstance] showGDPRConsentDialogInViewController:[UIApplication sharedApplication].keyWindow.rootViewController dismissalCallback:^{
// 这里示例在用户同意,或者数据同意未知情况下的非首次启动申请ATT权限,您可以根据应用实际情况进行调整。
if (([ATAPI sharedInstance].dataConsentSet == ATDataConsentSetUnknown && ([[NSUserDefaults standardUserDefaults] boolForKey:@"GDPR_First_Flag"] == YES))
|| [ATAPI sharedInstance].dataConsentSet == ATDataConsentSetPersonalized) {
if (@available(iOS 14, *)) {
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
}];
}
}
//初始化SDK
[[ATAPI sharedInstance] startWithAppID:kTakuAppID appKey:kTakuAppKey error:nil];
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"GDPR_First_Flag"];
}];
//......其他代码
}
[
1.6 测试方法
](#1.6_测试方法)
在测试阶段,您可以通过使用欧盟地区网络代理,或者用以下方法来模拟在欧盟地区UMP GDPR弹窗场景。
- API需要网络请求Google验证,请您满足相关网络环境要求。
- umpTestDeviceIdentifiers可以通过调用ATAPI单例中showGDPRConsentDialogInViewController:dismissalCallback:方法后,在console控制台日志中查找“UMPDebugSettings.testDeviceIdentifiers”获取。
- 上线请移除相关测试代码。
- (void)testUMPApply {
/**
* 上线前需要移除此测试代码
* umpTestDeviceIdentifiers可以通过调用ATAPI单例中的showGDPRConsentDialogInViewController:dismissalCallback:方法后,
* 在console控制台日志中过滤“UMPDebugSettings.testDeviceIdentifiers”获取
*/
[ATSDKGlobalSetting sharedManager].umpTestDeviceIdentifiers = @[@"Your Device Identifiers"];
[ATSDKGlobalSetting sharedManager].umpGeography = ATUMPDebugGeographyEEA;
}
[
1.7 在应用中添加可供用户撤消同意的链接
](#1.7_在应用中添加可供用户撤消同意的链接)
**注意:**撤消同意是欧洲经济区 (EEA)、英国和瑞士的用户同意投放个性化广告后可以撤消该同意的过程。要求必须在应用的菜单中提供相应链接,方便希望撤消同意的用户这么做,然后重新向其显示用户意见征求消息。
- 如需了解详情,请参阅这里。
- 请参阅Google AdMob Ads SDK 开发者文档实现隐私设置选项。
[
2. 常见问题
](#2._常见问题)[
2.1 项目中已集成UMP SDK,更新TopOn至6.2.87以上版本如何处理?
](#2.1_项目中已集成UMP_SDK,更新TopOn至6.2.87以上版本如何处理?)
由于TopOnSDK初始化时会优先读取UMP SDK设置的GDPR相关设置去设置第三方广告平台GDPR上报等级,所以开发者需要确保Admob后台GDPR设置中的**“广告合作伙伴”列表需要包含你应用中集成的所有广告平台**(Pangle,Maio,MyTarget,Yandex平台除外),具体可参考上方自行指定的广告合作伙伴进行配置。
除此以外建议使用ATAPI的单例中的showGDPRConsentDialogInViewController:dismissalCallback:方法替代原有UMP SDK Api调用代码,参考上方示例代码,在dismissalCallback中进行SDK初始化。如果希望保留项目中原有UMP SDK Api调用逻辑,那需要参考Admob UMP使用指南中示例,在UMPConsentForm的loadAndPresentIfRequiredFromViewController:completionHandler:方法返回中或者判断UMPConsentInformation.sharedInstance.canRequestAds为YES后进行TopOn SDK初始化
[
2.2 项目中已集成UMP SDK、后续App更新时又移除了UMP SDK的使用,更新TopOn至6.2.87以上版本如何处理?
](#2.2_项目中已集成UMP_SDK、后续App更新时又移除了UMP_SDK的使用,更新TopOn至6.2.87以上版本如何处理?)
由于TopOnSDK初始化时会优先读取UMP SDK设置的GDPR相关设置,即使移除UMP SDK,旧的GDPR配置缓存文件依然保留在本地。开发者需要在移除UMP SDK版本同时调用以下代码移除缓存数据,示例代码如下:
注意:此方法移除UMP SDK GDPR本地缓存后可能会影响到Admob面向欧洲经济区或英国的用户投放广告
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"IABTCF_TCString"];
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"IABTCF_PurposeConsents"];
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"IABTCF_AddtlConsent"];
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"IABTCF_VendorConsents"];