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

React Native Push Notification前后台接收及消息传递问题咨询

我来帮你一步步搞定这几个问题,咱们逐个拆解:

一、把pushMessage(chat)的内容传入通知

你只需要在SignalR的pushMessage回调里,把chat对象的字段替换到本地通知的title和message里就行。比如假设chat里有senderName(发消息人)和content(消息内容)字段,代码修改如下:

proxy.on('pushMessage', (chat) => {
  PushNotification.localNotification({
    foreground: true,
    title: `来自${chat.senderName}的消息`, // 用chat里的动态内容作为标题
    message: chat.content, // 直接用chat的内容作为通知消息
    // 可选:添加展开通知时的完整内容
    bigText: chat.content,
  });
});

注意:这里要根据你实际chat对象的字段名调整,比如如果消息标题存在chat.title里,就替换成title: chat.title。

二、实现前台+后台全场景接收推送

要覆盖前台、后台(应用在后台未关闭)、关闭应用三种场景,需要从配置和原生权限两方面调整:

1. 完善PushNotification.configure核心配置

修改你的configure方法,补充权限请求、后台处理等关键参数:

PushNotification.configure({
  // 收到通知(本地/远程)或点击通知时触发
  onNotification: function(notification) {
    console.log( 'NOTIFICATION:', notification );
    
    // 删掉原来重复发送本地通知的代码(会干扰正常逻辑)
    // PushNotification.localNotification({...});
    
    // iOS必须调用这个方法完成通知处理
    if (notification.finish) {
      notification.finish(PushNotificationIOS.FetchResult.NoData);
    }
  },
  
  // 显式请求推送权限(iOS/Android都会生效)
  requestPermissions: true,
  
  // 处理应用从通知点击打开的情况
  popInitialNotification: true,
  
  // Android配置:填你的Firebase Sender ID(依赖FCM推送)
  senderID: "你的Firebase Sender ID",
  
  // iOS权限配置:确保开启所有需要的权限
  permissions: {
    alert: true,
    badge: true,
    sound: true
  },
});

2. 原生平台权限配置

Android端

在AndroidManifest.xml的<application>标签内添加推送相关组件(如果还没加):

<receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationReceiver" />
<receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationPublisher" />
<service android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationRegistrationService" />
<service android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationListenerService" android:exported="false">
  <intent-filter>
    <action android:name="com.google.firebase.MESSAGING_EVENT" />
  </intent-filter>
</service>

同时要确保你已经集成了Firebase Cloud Messaging(FCM),Android推送依赖它运行。

iOS端

打开Xcode完成两个配置:

  • 在Signing & Capabilities里添加Push Notifications权限
  • 开启Background Modes里的Remote notifications选项
三、当前仅关闭应用能接收的问题修复

你现在只有关闭应用能收到通知,主要问题出在这几个地方,对应修改即可:

  1. 前台通知被干扰:原来的onNotification里重复发送本地通知,会覆盖SignalR回调的通知,删掉这段冗余代码
  2. 未请求推送权限:确保configure里的requestPermissions: true,应用启动时会弹出权限请求框,用户允许后才能在前台/后台接收通知
  3. 原生配置缺失:按照上面Android/iOS的配置步骤补全原生权限和组件,后台推送完全依赖这些原生配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:19:21