使用RealmDB(MongoDB)配合react-native-push-notification发送推送无响应问题
排查与解决方案
1. 修正Realm控制台配置
- 确认你填写的Sender ID是Firebase控制台「项目设置 > 云消息传递」下的发件人ID,API Key是同页面下的服务器密钥,不要误填客户端的Web API Key或移动端应用密钥,这是最常见的配置错误。
- 确认Realm应用绑定的包名/ Bundle ID和Firebase内配置的应用包名完全一致,字符完全匹配才能正常推送。
2. 补全设备Token同步逻辑
你当前的代码仅打印了FCM返回的设备Token,没有将Token同步关联到Realm用户,Realm无法确定推送目标设备,自然不会实际触发推送请求:
在onRegister回调中补充Token上传逻辑,示例如下:
PushNotification.configure({ onRegister: async function (token) { console.log('TOKEN:', token); // 确保当前已完成Realm用户登录 const currentUser = Realm.App.getApp("你的Realm App ID").currentUser; if (currentUser) { if (token.os === "android") { // 上传FCM Token到Realm await currentUser.pushRegistrations.addFcm(token.token); } else if (token.os === "ios") { // iOS设备上传APNs Token await currentUser.pushRegistrations.addApns(token.token); } } }, // 其余原有配置保持不变 })
配置完成后重新登录一次应用,到Realm控制台的用户详情页确认对应用户的推送注册列表中已经出现对应的FCM Token记录。
3. 校验通知发送参数
- 在Realm控制台发送测试通知时,安卓配置项的通道ID必须和你代码中创建的
fcm_fallback_notification_channel完全一致,安卓8.0及以上系统会直接丢弃通道ID不匹配的通知。 - 初期测试仅填写纯文本标题、内容,不要添加自定义payload参数,排除特殊字符或格式错误导致的推送拦截。
4. 链路验证
- 确认测试设备没有开启应用通知拦截、省电模式等限制后台活动的功能。
- 直接通过FCM的HTTP接口使用同一个Token发测试通知,确认Token本身有效,排除Token过期问题。
内容的提问来源于stack exchange,提问作者XplosiVe06
相关产品推荐
相关产品推荐

