适配 iOS14.5+
这篇指南,主要概述应用适配iOS14.5+所需的调整。Apple将在2021年实施一个新的规则,在iOS14.5+上通过弹窗来获取IDFA,使用IDFA需要征得用户的同意。
前提
- 需要接入 TradPlusSDK 4.6.6或以上版本
- 开发工具需要升级到Xcode12
申请IDFA权限
- 为了申请IDFA权限,需要info.plist里添加NSUserTrackingUsageDescription键,内容为自定义的字符串,说明为什 么要获取IDFA,可根据应用本身的需求决定是否对此字符串做国际化处理。
//注意⚠️
//如果加上了这个,必须执行第2步,弹出IDFA权限申请,否则无法通过Appstore审核。
<key>NSUserTrackingUsageDescription</key>
<string>该标识符将用于向您投放个性化广告。</string>
- 在应用启动后,弹出IDFA权限申请,这个弹框只会出现一次,后续如果要变更IDFA权限,需要在手机的系统设置【隐私】-【跟踪】里调整。
#import <AppTrackingTransparency/AppTrackingTransparency.h>
//建议在TradPlus SDK初始化前调用
if (@available(iOS 14.5, *)) {
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
}];
iOS15中的变化
⚠️注意:在iOS 15.0中如果是在启动方法中调用授权,我们测试发现是不会弹出授权提示框
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions
解决方案
1.可以在这两个方法中注册 UIApplicationDidBecomeActiveNotification 通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didBecomeActive) name:UIApplicationDidBecomeActiveNotification object:nil];