Expo v25分离版应用适配react-native-firebase及推送方案咨询
针对Expo v25裸工作流应用的Android推送通知方案建议
首先,先给你梳理下react-native-firebase和react-native-push-notification这两个方案的优劣势,再给你落地步骤的建议——毕竟你已经在iOS端用PushNotificationIOS跑通了,核心是让Android端适配起来更顺畅,同时尽量和iOS的体验对齐。
方案对比与选型建议
1. react-native-firebase(Firebase React Native SDK)
如果你项目已经在用Firebase生态(比如分析、认证、数据库),或者打算引入,优先选这个:
- 优势:官方维护,稳定性和兼容性更有保障;集成了FCM的全特性,包括数据消息、Android O+的通知渠道、后台消息处理;和Expo裸工作流的适配性经过验证,老版本Expo(比如v25)只要选对对应版本的SDK就行;
- 劣势:依赖Firebase服务,如果不想绑定Firebase生态,会显得有点重;需要额外配置Firebase项目。
2. react-native-push-notification
如果你想轻量控制,或者需要对接非Firebase的推送服务商(比如JPush、个推),可以考虑这个:
- 优势:不绑定第三方服务,灵活性高;体积小,只专注推送功能;
- 劣势:社区维护,更新节奏不如官方;老版本React Native(Expo v25对应RN 0.57.x)需要找兼容的旧版本,而且很多细节(比如通知渠道创建、后台广播)需要自己手动配置,踩坑概率更高。
总结选型:优先推荐react-native-firebase,尤其是如果你能接受Firebase生态的话——它能帮你省掉很多Android推送的底层配置工作,而且长期维护更靠谱。
落地步骤指南
第一步:确认版本兼容性
Expo v25对应的React Native版本是0.57.x,所以你必须选支持这个RN版本的库:
react-native-firebase:选v5.x系列(v6+开始不再支持RN 0.57);react-native-push-notification:选v3.x系列(v4+对RN版本要求更高);
安装时一定要指定版本,比如:
# 安装react-native-firebase v5.x npm install react-native-firebase@5.6.0 --save
第二步:配置Android FCM基础环境
不管用哪个库,Android推送都依赖FCM,先完成基础配置:
- 去Firebase控制台创建项目,添加Android应用,下载
google-services.json,放到android/app目录下; - 修改
android/build.gradle,添加Google服务插件依赖:buildscript { dependencies { // 注意版本要对应,比如用3.2.1适配RN 0.57 classpath 'com.google.gms:google-services:3.2.1' } } - 修改
android/app/build.gradle,在末尾添加:apply plugin: 'com.google.gms.google-services'
第三步:安装并配置选中的库
如果你选react-native-firebase
- 链接原生依赖(RN 0.57支持
react-native link):react-native link react-native-firebase - 配置
AndroidManifest.xml,添加FCM服务和权限(参考官方v5.x文档的配置,主要是添加FirebaseMessagingService的声明); - 在App启动时初始化Firebase:
import firebase from 'react-native-firebase'; // 在App入口调用 firebase.initializeApp(); - 设置通知监听器,处理前台/后台通知:
// 前台通知监听 firebase.notifications().onNotification((notification) => { // 显示通知 notification.android.setChannelId('default').show(); }); // 点击通知监听 firebase.notifications().onNotificationOpened((notificationOpen) => { // 处理点击逻辑 });
如果你选react-native-push-notification
- 链接原生依赖:
react-native link react-native-push-notification - 修改
AndroidManifest.xml,添加FCM的广播接收器和权限; - 初始化推送配置:
import PushNotification from 'react-native-push-notification'; PushNotification.configure({ onNotification: function(notification) { // 处理通知逻辑 }, // 其他配置项,比如FCM的senderID senderID: '你的Firebase Sender ID', }); // 创建Android通知渠道(适配O+) PushNotification.createChannel( { channelId: "default", channelName: "Default Channel", }, (created) => console.log(`Channel created: ${created}`) );
第四步:测试与对齐iOS体验
- 用Firebase控制台发送测试通知,验证Android前台、后台、杀死App后的接收情况;
- 封装一个通用的通知工具类,把iOS的
PushNotificationIOS和Android的逻辑统一起来,比如统一处理通知点击、消息内容解析; - 注意Android的通知渠道必须配置,否则O+系统收不到通知;
第五步:处理后台消息
react-native-firebase可以通过firebase.messaging().setBackgroundMessageHandler处理后台数据消息;react-native-push-notification需要自定义广播接收器来处理后台消息,这部分要参考库的旧版本文档;
内容的提问来源于stack exchange,提问作者nirpeled
相关产品推荐
相关产品推荐

