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

React Native接入Firebase后iOS14+正式版自定义事件不上报问题求助

问题根因定位

首先你现有代码存在明显的逻辑错误:case RESULTS.UNAVAILABLE || RESULTS.GRANTED: 写法不符合JavaScript语法规则,逻辑或运算在此处只会返回第一个真值,也就是说只有RESULTS.UNAVAILABLE会命中分支,RESULTS.GRANTED永远无法进入对应逻辑,debug模式通常默认开放权限所以未触发问题,release包严格校验权限就会出现上报失败。

必做配置排查项
  • Info.plist 必须添加2个配置项:
    1. 键NSUserTrackingUsageDescription,对应值为ATT权限申请的说明文本,TestFlight包如果缺失该配置,权限申请会直接被系统驳回返回拒绝状态
    2. 键FirebaseAnalyticsDelegateEnabled,类型为布尔值设为YES,确保Firebase Analytics的代理在release模式下正常生效
  • 你使用的@react-native-firebase v12.4.0版本存在已知的iOS release包自定义事件上报Bug,需要升级到至少v12.9.0及以上版本,该版本修复了ATT授权后 Analytics 收集开关不生效的问题
  • Podfile 中删除手动引入的pod 'Firebase/Analytics'配置,RN Firebase会自动拉取版本匹配的iOS依赖,手动引入会导致依赖版本不兼容,删除后执行pod install --repo-update重新安装依赖
  • 修正ATT权限逻辑:Firebase Analytics上报不需要Facebook的setAdvertiserTrackingEnabled配置,该配置仅影响广告归因,不会限制自定义事件上报,不要把SDK初始化逻辑放在权限申请的回调里,要保证Firebase在应用启动时就完成初始化。修正后的代码示例:
async requestPermissionsTransparency() {
  if(Platform.OS !== 'ios') return
  const status = await request(PERMISSIONS.IOS.APP_TRACKING_TRANSPARENCY)
  const attStatus = status[PERMISSIONS.IOS.APP_TRACKING_TRANSPARENCY]
  // 无论ATT授权结果都可以开启Analytics收集,授权仅影响广告归因数据匹配,不影响事件上报本身
  await firebase.analytics().setAnalyticsCollectionEnabled(true);
  // 仅保留Facebook SDK需要的配置逻辑
  if(attStatus === RESULTS.GRANTED || attStatus === RESULTS.UNAVAILABLE) {
    await Settings.setAdvertiserTrackingEnabled(true)
  }
  Settings.initializeSDK()
}
  • 检查Xcode release模式配置:确认Build Settings中的Other Linker Flags项已添加-ObjC参数,缺失该参数会导致Firebase的部分分类方法在release模式下不生效,引发事件丢失。
验证方法

打TestFlight包前先打本地release包,连接Xcode查看设备控制台的日志,过滤[Firebase/Analytics]开头的日志,可直接查看事件上报的成功/失败原因,无需等待Firebase后台数据延迟(正常后台数据延迟最多24小时,超过该时长基本可以确定是上报环节失败)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:24:00