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

使用Expo OTA后,如何为React Native Firebase Analytics设置app_version?

Expo OTA更新与Firebase Analytics版本显示问题解答

一、Expo的app_version固化机制确认

  • 没错,Expo项目里的app_version(对应package.json的version字段)是在构建二进制安装包(IPA/APK/AAB)时就固化到原生代码里的。OTA更新只替换JS代码和静态资源,根本碰不到原生二进制里的版本信息——所以哪怕你在推送OTA时把package.json的version升到v4.0.1,用户设备上的原生版本号还是当初构建v4.0.0二进制时的数值,这就是Firebase和调试里都显示旧版本的原因。
  • 这里得明确两个版本的区别:
    • 原生版本号:由app.json/app.config.js里的version、android.versionCode、ios.buildNumber控制,只有重新打包提交应用商店才会更新,Firebase默认抓取的就是这个版本。
    • OTA更新版本:用package.json的version作为runtimeVersion,用来匹配对应的二进制包,但这个版本只在Expo更新体系里生效,不会同步到原生层。

二、手动指定Firebase Analytics中的版本方案

要让Firebase能识别OTA更新后的版本,不能依赖原生默认版本,得自己加自定义维度:

  1. 先去Firebase控制台创建一个自定义维度,比如叫ota_app_version。
  2. 在项目里,每次启动时读取package.json的version,把它设为Firebase的用户属性:
    import { getAnalytics, setUserProperties } from 'firebase/analytics';
    import packageJson from './package.json';
    
    const analytics = getAnalytics();
    // 设置OTA版本作为自定义属性
    setUserProperties(analytics, {
      ota_app_version: packageJson.version
    });
    
  3. 之后在Firebase的报表里,就能通过这个自定义维度查看不同OTA版本的数据了。

三、关于手动修改app_version的说明

  • 原生层面的app_version没法通过OTA更新修改,必须重新构建二进制包,更新app.json里的版本配置,再提交应用商店,才能让原生版本号更新,进而让Firebase默认显示这个新版本。
  • 如果只是为了区分不同OTA更新的用户,用上面的自定义维度方案就足够,没必要频繁发新的二进制包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:03:36