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

React Native/Expo如何实现应用未启动或未打开时的推送通知?

针对React Native/Expo场景下后台/未启动状态推送通知的解决方案

需求可行性结论

可以实现,即时通讯场景下的离线消息通知是非常成熟的通用需求,不需要应用进程存活即可完成推送。

底层实现逻辑

所有移动端的离线推送都依赖系统级别的长连接通道,和应用本身进程状态无关:

  • iOS 统一走苹果官方 APNs 推送通道
  • 海外 Android 统一走 FCM 谷歌云消息通道
  • 国内 Android 因为谷歌服务缺失,走各手机厂商自研的系统推送通道(小米、华为、OPPO、vivo等均有自有推送服务)
    应用仅需要在首次启动时向对应通道注册获取唯一的设备推送token,将token和用户账号绑定存储在你的业务后端即可,后续发通知不需要应用在线。

具体实现路径

如果你用Expo开发

Expo已经封装了全平台的推送适配能力,不需要逐个对接厂商通道,步骤如下:

  1. 安装官方通知依赖:npx expo install expo-notifications
  2. 应用首次启动时向用户申请通知权限,获取Expo生成的专属设备推送token,将该token上传到你的业务服务端和用户账号绑定
  3. 当用户收到新的即时消息时,你的业务服务端直接调用Expo推送接口,传入对应用户的token和消息内容,即可完成离线推送
    注意:国内Android生产环境需要你提前在Expo配置中补全对应厂商的推送服务参数,否则可能出现进程杀死后收不到通知的问题

如果你用纯React Native(非Expo)开发

  • 面向海外用户:直接对接APNs+FCM即可,常用成熟封装库为 @react-native-firebase/messaging 或 react-native-push-notification
  • 面向国内用户:Android端需要单独对接各大厂商的推送SDK,也可以使用国内第三方统一推送服务的RN封装包降低适配成本。完成SDK接入后同样是首次启动获取token绑定用户,服务端调用对应推送接口发通知即可。

注意事项

  • iOS必须在Xcode中开启推送通知能力,且用户授权通知权限后才能收到推送
  • 国内Android设备仅接入第三方推送的自建长连接无法在进程杀死后收到通知,必须接入对应厂商的系统级推送通道才能实现离线接收
  • 通知点击跳转的逻辑可以在应用内自行配置,用户点击通知后可以直接唤起应用进入对应聊天页面

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:54:07