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

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

  1. 链接原生依赖(RN 0.57支持react-native link):
    react-native link react-native-firebase
    
  2. 配置AndroidManifest.xml,添加FCM服务和权限(参考官方v5.x文档的配置,主要是添加FirebaseMessagingService的声明);
  3. 在App启动时初始化Firebase:
    import firebase from 'react-native-firebase';
    
    // 在App入口调用
    firebase.initializeApp();
    
  4. 设置通知监听器,处理前台/后台通知:
    // 前台通知监听
    firebase.notifications().onNotification((notification) => {
      // 显示通知
      notification.android.setChannelId('default').show();
    });
    
    // 点击通知监听
    firebase.notifications().onNotificationOpened((notificationOpen) => {
      // 处理点击逻辑
    });
    

如果你选react-native-push-notification

  1. 链接原生依赖:
    react-native link react-native-push-notification
    
  2. 修改AndroidManifest.xml,添加FCM的广播接收器和权限;
  3. 初始化推送配置:
    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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:28:00