You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在iOS 15.1系统上正常显示AppTrackingManager权限申请弹窗

iOS 15.1 应用跟踪权限弹窗无法弹出解决方案
  • 首先修正AppDelegate的方法签名错误
    你当前编写的application:applicationDidBecomeActive:launchOptions不是系统回调的标准方法,系统不会触发该方法执行,导致权限请求代码从未运行。请替换为以下正确代码:
// 系统标准的应用启动完成回调
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // 可在这里提前判断权限状态
    return YES;
}

// 系统标准的应用进入活跃状态回调
- (void)applicationDidBecomeActive:(UIApplication *)application {
    [self requestIDFA];
}

- (void)requestIDFA {
    if (@available(iOS 14, *)) {
        ATTrackingManagerAuthorizationStatus status = [ATTrackingManager trackingAuthorizationStatus];
        // 仅权限状态为未申请时,调用接口才会弹出弹窗
        if (status == ATTrackingManagerAuthorizationStatusNotDetermined) {
            [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
                NSLog(@"跟踪权限状态:%ld", (long)status);
            }];
        } else {
            NSLog(@"已申请过权限,当前状态:%ld", (long)status);
        }
    } else {
        // 低版本系统兼容逻辑
    }
}
  • 检查Info.plist配置
    必须在Info.plist中添加NSUserTrackingUsageDescription字段,字段值为你申请跟踪权限的业务说明文案(例如「为向您提供更个性化的内容推荐,需要获取您的广告标识符权限」),缺少该字段时调用权限接口会直接无响应或崩溃。
  • 检查系统全局跟踪开关
    进入iOS系统【设置】-【隐私与安全性】-【跟踪】,确认「允许App请求跟踪」总开关处于开启状态,该开关关闭时所有App都无法弹出权限申请弹窗,会直接返回拒绝状态。
  • 检查框架引入是否正确
    你提到引入的是AppTransparencyFramework,正确的框架名称应为AppTrackingTransparency.framework,引入时注意不要写错名称,同时需要在头文件中导入正确依赖:
#import <AppTrackingTransparency/AppTrackingTransparency.h>
#import <AdSupport/AdSupport.h>
  • 权限状态重置验证
    如果之前已经调用过一次权限申请接口,后续再次调用不会重复弹出弹窗,需要卸载重装App才能将权限状态重置为未申请,重新验证弹窗逻辑。

内容的提问来源于stack exchange,提问作者Omer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 04:15:03