You need to enable JavaScript to run this app. Kids类React Native应用被Apple拒审:如何移除AppTrackingTransparency.framework
优惠活动
大模型
产品
解决方案
定价
更多

Kids类React Native应用被Apple拒审:如何移除AppTrackingTransparency.framework

Kids分类应用移除内置AppTrackingTransparency框架的实操方案

只搜源码里的AppTrackingTransparency字符串找不到关联是非常常见的情况:这类系统框架通常是被第三方SDK写在podspec的链接配置里静态编译进二进制的,不会在JS层或者OC源码里留直接的引用文本,自然检索不到。

快速定位问题依赖

在iOS项目根目录下执行如下命令,直接扫描所有已安装Pod的配置文件,找出所有声明了ATT框架依赖的条目:

grep -r "AppTrackingTransparency" ./Pods --include="*.podspec" --include="*.json" --include="*.xcconfig"

结合你提供的依赖列表,高风险内置来源基本可以锁定两个:

  • react-native-onesignal@^4.0.3:OneSignal 4.x版本SDK默认会链接AppTrackingTransparency和AdServices框架用于广告归因,哪怕你没有主动写过任何ATT权限申请代码,只要框架被链接进二进制,苹果审核的静态扫描就会判定你实现了ATT。
  • @react-native-firebase/analytics@10.5.1:Firebase Analytics 8.x以上版本会默认依赖AdSupport框架,部分版本会连带触发ATT的链接检测规则。

直接在Podfile层面移除框架链接,无需降级SDK

找到问题来源后不需要卸载对应功能,直接在Podfile的现有post_install块里添加配置,强制摘掉所有SDK内置的ATT链接即可:

platform :ios, '10.0'

target 'Einee' do
  # 原有项目配置全部保留...

  post_install do |installer|
    # 原有的Flipper配置保留
    flipper_post_install(installer)

    # 新增:遍历所有Pod目标,移除对ATT框架的链接
    installer.pods_project.targets.each do |target|
      target.build_configurations.each do |config|
        # 从链接标记列表里删除ATT框架
        other_ldflags = config.build_settings['OTHER_LDFLAGS'] ||= ['$(inherited)']
        other_ldflags.delete('-framework "AppTrackingTransparency"')
        # 清理路径配置里残留的ATT框架搜索路径
        search_paths = config.build_settings['FRAMEWORK_SEARCH_PATHS'].to_s
        config.build_settings['FRAMEWORK_SEARCH_PATHS'] = search_paths.gsub('AppTrackingTransparency.framework', '').strip
      end
    end

    # 新增:针对OneSignal SDK,完全禁用内置的ATT相关代码编译
    onesignal_target = installer.pods_project.targets.find { |t| t.name == 'OneSignal' }
    if onesignal_target
      onesignal_target.build_configurations.each do |config|
        config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= ['$(inherited)']
        config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] << 'ONESIGNAL_DISABLE_ATT=1'
      end
    end
  end
end

配套的OneSignal Extension配置说明

你现在给OneSignalNotificationServiceExtension目标配置的3.x版本OneSignal pod本身不包含ATT链接,不需要额外修改,只要处理主工程的OneSignal pod即可。

最终验证步骤

修改完Podfile后重新执行pod install完成依赖更新,编译Release包后,用如下命令扫描最终二进制,确认没有ATT残留:

# 替换为你实际编译产物的路径
otool -v -o ./build/Release-iphoneos/Einee.app/Einee | grep -i "AppTrackingTransparency"

命令执行后没有任何输出,就说明二进制里已经完全没有ATT的引用,不会再触发苹果审核的Kids分类规则检测。

注意事项

  • 检查项目Info.plist,确保没有添加NSUserTrackingUsageDescription字段,哪怕代码里没有相关调用,这个字段的存在也会被判定为实现了ATT。
  • 如果Firebase Analytics还是被检测到关联,同样可以通过上面的OTHER_LDFLAGS移除配置,把Firebase pod链接的AdSupport、AppTrackingTransparency条目从链接列表里删掉,不会影响基础的事件上报功能,只是关闭了广告归因的相关能力。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 12:06:04