效果是这样的(更新一下,有朋友问为什么现在弹不出弹窗,因为ios15之后,相关机制变了,所以要更改一下代码):
在App启动的时候,appdelegate.m中导入头文件:
#import <AdSupport/AdSupport.h>
#import <AppTrackingTransparency/AppTrackingTransparency.h>
然后再启动代码块中加入:
//更新前
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
//跟踪
if(@available(iOS14,*)){
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
}];
}else{
[[ASIdentifierManager sharedManager]isAdvertisingTrackingEnabled];
}
}
//更新后
- (void)applicationDidBecomeActive:(UIApplication *)application {
//是否允许跟踪权限必须写在DidBecomeActive周期中,不然无法弹出权限弹窗
if (@available(iOS 14, *)) {
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
}];
} else {
[[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled];
}
}
说白了更新后就是把代码从didFinishLaunching移到了applicationDidBecomeActive,这样就能在ios15上弹出弹窗了,苹果也不会因为这个拒审了
最后记得添加权限:
key:
Privacy - Tracking Usage Description
value:
请允许获取并使用您的活动跟踪,以便于向您进行个性化推送服务,从而减少无关服务对您造成的干扰
网友评论