适配 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];
然后在接受到通知后进行授权操作
- (void)didBecomeActive
{
if (@available(iOS 14.5, *))
{
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
}];
}
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil];
}
2.如果你的app 不支持 Application Scene 也可以在 AppDelegate 中的 applicationDidBecomeActive 回调中进行处理
applicationDidBecomeActive 回调时机是 每次app回到前台时,所以需要您根据自身的业务需求进行处理例如:
- (void)applicationDidBecomeActive:(UIApplication *)application
{
if (@available(iOS 14.5, *))
{
if([ATTrackingManager trackingAuthorizationStatus] == ATTrackingManagerAuthorizationStatusNotDetermined)
{
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
}];
}
}
}
在App Store中披露数据使用情况
- APPLE官方要求在App Store上发布应用程序的开发人员必须披露有关其数据使用情况的某些信息。 苹果已经宣布,从2020年12月8日开始,新应用和应用更新将需要这些披露。
- 了解有关数据披露要求的更多信息。