Flutter iOS应用因未实现ATT被拒,求解决方案及合规疑问
Flutter iOS 应用 App Tracking Transparency(ATT)实现方案及合规疑问解答
一、ATT 实现步骤(Flutter)
- 引入插件:在
pubspec.yaml中添加app_tracking_transparency依赖,比如app_tracking_transparency: ^2.0.4,执行flutter pub get完成安装。 - 配置Info.plist:在iOS项目的
Info.plist文件中添加两项关键配置:- 添加
NSUserTrackingUsageDescription键,值需清晰向用户说明跟踪权限的用途(例如"我们需要此权限来优化应用体验并提供精准的服务统计"),苹果会严格检查该描述的合理性。 - 若涉及订阅归因(如RevenueCat的来源跟踪),需添加
SKAdNetworkItems数组,填入对应的SKAdNetwork ID(可参考RevenueCat相关文档获取所需ID)。
- 添加
- 代码请求权限:选择合适时机发起权限请求(禁止应用启动时直接弹窗,建议在首页初始化完成后或用户产生交互后),示例代码如下:
import 'package:app_tracking_transparency/app_tracking_transparency.dart'; Future<void> requestTrackingPermission() async { final currentStatus = await AppTrackingTransparency.trackingAuthorizationStatus; if (currentStatus == TrackingStatus.notDetermined) { final newStatus = await AppTrackingTransparency.requestTrackingAuthorization(); switch (newStatus) { case TrackingStatus.authorized: // 用户授权,可正常使用Firebase Analytics、RevenueCat的跟踪功能 break; case TrackingStatus.denied: // 用户拒绝,需确保相关SDK在无权限下正常运行(Firebase Analytics会自动切换至非跟踪模式) break; case TrackingStatus.restricted: // 设备受系统限制,无法获取权限 break; default: break; } } }
二、firebase_analytics 与 RevenueCat 的合规要求
- firebase_analytics: Firebase Analytics默认会收集IDFA用于用户行为跟踪与归因,根据苹果ATT规则,只要应用收集或使用IDFA,就必须请求用户授权。即便未集成广告,只要Firebase Analytics在运行,就需要实现ATT。
- RevenueCat: RevenueCat核心是订阅管理,但它会使用IDFA进行订阅来源归因(如跟踪用户从哪个渠道完成订阅),这属于苹果定义的"跟踪"行为,因此必须遵守ATT规则,请求用户授权。
综上,你的应用必须实现ATT才能通过苹果审核,即便没有广告集成。
内容的提问来源于stack exchange,提问作者gurkan stack
相关产品推荐
相关产品推荐

