Flutter实现App Tracking Transparency解决苹果审核被拒问题
iOS App Store跟踪透明度配置排查修复方案
现存问题
你当前的配置存在3个核心问题,会导致苹果审核被拒:
- 未添加Info.plist的权限描述字段,这是苹果要求的必填配置
- 授权请求时机错误,放在runApp前的启动阶段调用,不符合苹果的规范要求
- 未做iOS系统版本判断,低于14.5的系统调用该接口会出现异常
修复步骤
1. 配置Info.plist权限描述
打开ios/Runner/Info.plist文件,在dict节点内添加如下配置:
<key>NSUserTrackingUsageDescription</key> <string>该权限将用于为您推荐个性化内容与广告,优化您的使用体验</string>
注意:描述内容必须明确说明你收集用户标识符的实际用途,禁止使用模糊表述,否则仍会被审核驳回
2. 调整授权请求代码
首先删除main.dart中main函数内的这两行代码:
final TrackingStatus status = await AppTrackingTransparency.requestTrackingAuthorization();
将授权请求移到应用首页面加载完成后的生命周期中调用,同时添加平台与版本判断,示例代码如下:
import 'package:device_info_plus/device_info_plus.dart'; // 需提前在pubspec.yaml添加该依赖 // 放在首页的initState方法内 @override void initState() { super.initState(); WidgetsBinding.instance.addPostFrameCallback((_) async { if (Platform.isIOS) { // 获取iOS系统版本 final iosInfo = await DeviceInfoPlugin().iosInfo; final versionNum = double.tryParse(iosInfo.systemVersion.split('.').take(2).join('.')) ?? 0; // 仅iOS 14.5及以上版本需要申请权限 if (versionNum >= 14.5) { await AppTrackingTransparency.requestTrackingAuthorization(); } } }); }
3. 调整第三方SDK初始化时机
如果你集成了Firebase、广告、统计类第三方SDK,请将这些SDK的初始化逻辑放在用户完成跟踪授权之后执行,避免在未授权的情况下提前收集用户数据,触发苹果审核规则。
内容的提问来源于stack exchange,提问作者Mackie
相关产品推荐
相关产品推荐

