如何在Expo项目中集成使用Firebase In-App Messaging及Dynamic Links
Expo接入Firebase In-App Messaging与Dynamic Links解决方案
步骤1:版本适配
你遇到的两个报错核心原因是使用的@react-native-firebase v12.9.3版本不自带Expo配置插件,该功能从@react-native-firebase v14.3.0版本开始原生支持,需要先完成版本匹配:
- 将Expo SDK升级到45及以上版本
- 所有
@react-native-firebase相关包版本号必须完全统一,建议升级到^18.8.0及以上稳定版本
步骤2:依赖安装
安装所有需要的Firebase相关依赖:
"@react-native-firebase/app": "^18.8.0", "@react-native-firebase/analytics": "^18.8.0", "@react-native-firebase/messaging": "^18.8.0", "@react-native-firebase/in-app-messaging": "^18.8.0", "@react-native-firebase/dynamic-links": "^18.8.0"
步骤3:配置文件修正
将Firebase对应的安卓配置文件google-services.json、iOS配置文件GoogleService-Info.plist放到项目根目录后,在app.json的expo节点下添加插件配置:
"plugins": [ "@react-native-firebase/app", [ "@react-native-firebase/analytics", { "disableAdIdCollection": false } ], "@react-native-firebase/in-app-messaging", "@react-native-firebase/dynamic-links" ]
不需要引入第三方废弃插件,新版@react-native-firebase包会自动完成原生层配置注入
步骤4:重新生成原生构建包
Expo Go不支持原生插件,需要执行以下操作生成带原生依赖的运行包:
- 执行
npx expo prebuild --clean清除旧的原生构建缓存 - 本地调试执行
npx expo run:android(安卓)或npx expo run:ios(iOS) - 云端打包执行
eas build重新生成安装包
步骤5:业务代码调整
你原来的useEffect缺少async标识,修正后参考代码:
import inAppMessaging from '@react-native-firebase/in-app-messaging'; import dynamicLinks from '@react-native-firebase/dynamic-links'; useEffect(() => { // 初始化应用内消息,关闭默认弹窗逻辑,可自定义展示时机 const initInAppMsg = async () => { await inAppMessaging().setMessagesDisplaySuppressed(true); }; initInAppMsg(); // 动态链接监听逻辑示例 const linkListener = dynamicLinks().onLink((link) => { // 此处处理动态链接跳转业务逻辑 console.log('收到动态链接:', link.url); }); return () => linkListener(); }, []);
特殊适配说明
- iOS端使用动态链接需要在Xcode配置中开启Associated Domains功能,添加对应动态链接域名,格式为
applinks:你的域名.page.link - 应用内消息的触发条件可直接在Firebase控制台配置,和Analytics事件自动打通即可触发
内容的提问来源于stack exchange,提问作者Pruteanu Alexandru
相关产品推荐
相关产品推荐

