React Native接入Firebase后iOS14+正式版自定义事件不上报问题求助
问题根因定位
首先你现有代码存在明显的逻辑错误:case RESULTS.UNAVAILABLE || RESULTS.GRANTED: 写法不符合JavaScript语法规则,逻辑或运算在此处只会返回第一个真值,也就是说只有RESULTS.UNAVAILABLE会命中分支,RESULTS.GRANTED永远无法进入对应逻辑,debug模式通常默认开放权限所以未触发问题,release包严格校验权限就会出现上报失败。
必做配置排查项
- Info.plist 必须添加2个配置项:
- 键
NSUserTrackingUsageDescription,对应值为ATT权限申请的说明文本,TestFlight包如果缺失该配置,权限申请会直接被系统驳回返回拒绝状态 - 键
FirebaseAnalyticsDelegateEnabled,类型为布尔值设为YES,确保Firebase Analytics的代理在release模式下正常生效
- 键
- 你使用的
@react-native-firebasev12.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
相关产品推荐
相关产品推荐

