此问题已在 GitHub issues here 中提交 - 重新发布,希望为遇到相同问题的其他人节省时间
尝试将旧应用程序使用的推送通知包更改为最新的 React Native 和 Firebase 消息传递。我从头开始设置了一个新应用程序来隔离问题 - 所有新标识符、捆绑 ID、证书等。新项目中安装的唯一内容是
yarn add @react-native-firebase/app
和 @react-native-firebase/messaging
在 Android 上一切正常。在 iOS 后台和终止状态消息也可以工作,但是在前台时永远不会触发 onMessage 事件 😢
我遵循了 https://reactnative.dev/docs/environment-setup 、https://rnfirebase.io/ 、https://rnfirebase.io/messaging/usage 和 上的所有最新指南https://rnfirebase.io/messaging/usage/ios-setup.
我正在使用 AWS SNS 发送通知。
在回复我的 GitHub 问题的优秀人士的帮助下,我能够让它发挥作用。
非常感谢大家,现在可以使用了🎉
当从 Firebase 控制台发送通知时,
onMessage
功能可以正常工作,但我们的后端使用 AWS SNS,切换到使用 Firebase REST API 会太复杂。
进一步调查,我发现旧的 GitHub 问题(例如 #3479 和 #5908)中有用的讨论解决了
gcm.message_id
键的问题。
我没有通过删除
RNFBMessaging+UNUserNotificationCenter.m
条件(这有在更新期间被覆盖的风险)来更改 if (notification.request.content.userInfo[@"gcm.message_id"])
中的代码,而是选择向有效负载添加一个虚拟 gcm.message_id
。事实证明这个解决方案是有效的。
{
"aps": {
"alert": {
"title": "Sample Title",
"body": "Sample Message"
}
},
"url": "https://example.com",
"gcm.message_id": "123"
}