关于 Firebase 文档,我有(我想)可折叠消息。 我在 Android 上也遇到了类似的问题,但从有效负载中删除整个
notification
对象后,它开始工作。
但在 iOS 上发送(仅)数据作为有效负载的通知没有任何帮助 - 只有在将网络从离线切换到在线后才会出现最后一个通知。
老实说,我尝试了很多不同的方法(有或没有 apns 标头,没有 apns 等),但我看到了一个死胡同。救命!
目前,我的有效负载看起来:
message: {
token: 'some token',
data: {
title: 'some title',
body: 'some body',
content_available: 'true',
priority: 'high'
}
}
我正在使用 Rest API
发送我正在使用:
System:
OS: macOS 12.7.4
CPU: (8) x64 Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz
Memory: 3.49 GB / 16.00 GB
Shell: 5.8.1 - /bin/zsh
Binaries:
Node: 16.17.1 - ~/.nvm/versions/node/v16.17.1/bin/node
Yarn: 1.22.19 - ~/.nvm/versions/node/v16.17.1/bin/yarn
npm: 9.8.1 - ~/.nvm/versions/node/v16.17.1/bin/npm
Watchman: 2024.01.22.00 - /usr/local/bin/watchman
Managers:
CocoaPods: 1.15.2 - /Users/darek/.rvm/gems/ruby-2.6.5/bin/pod
SDKs:
iOS SDK:
Platforms: DriverKit 22.2, iOS 16.2, macOS 13.1, tvOS 16.1, watchOS 9.1
Android SDK: Not Found
IDEs:
Android Studio: 2022.3 AI-223.8836.35.2231.10671973
Xcode: 14.2/14C18 - /usr/bin/xcodebuild
Languages:
Java: 11.0.21 - /usr/local/opt/openjdk@11/bin/javac
npmPackages:
@react-native-community/cli: Not Found
react: 18.2.0 => 18.2.0
react-native: 0.71.17 => 0.71.17
react-native-macos: Not Found
"@notifee/react-native": "7.8.0",
and
"@react-native-firebase/analytics": "19.2.2",
"@react-native-firebase/app": "19.2.2",
"@react-native-firebase/messaging": "19.2.2",
(also tried 18.8.0, 18.9.0)
已尝试多种选项来解决上述问题。特别是当遇到通过 Firebase 向 iOS 设备发送推送通知的问题时。
您可能需要解决的第一件事是确保您的 Firebase 项目设置正确,特别是 APNs 身份验证密钥 或 iOS 推送通知证书。
关于您的有效负载,看起来基本正确,但有几点需要澄清:
根据您的设置,这是修改后的有效负载示例:
{
"message": {
"token": "some token",
"data": {
"title": "some title",
"body": "some body",
"content_available": true,
"priority": "high"
}
}
}
如果在确保上述几点后您仍然遇到问题,则需要更深入地了解 iOS 设置的具体情况:
您所描述的 iOS 行为是预期的。
如果设备离线,APNS 可能会合并应用程序的消息并仅传送最新的:
- 如果 APN 没有立即发送通知,无论是出于设备电源考虑还是因为目标处于离线状态,它可能会合并同一捆绑包 ID 的通知。
iOS 上的推送通知不提供送达保证。它们不应被视为应用程序从服务器获取数据的替代方案。无声推送通知可以用作触发器,告诉您的应用程序从服务器获取数据。