我在react本机应用程序中使用firebase/messaging来接收来自firebase的仅限数据的通知。
当收到消息时,我会处理数据,更新我的状态,并在应用程序处于后台或终止时显示带有本地推送通知的本地通知。
messaging().setBackgroundMessageHandler(async remoteMessage => {
PushNotification.localNotification({...})
})
在安卓设备上,前台、后台和终止状态下一切都很完美。
在iOS中,前台和后台都可以工作。
当应用程序终止时,我可以在控制台中记录通知(见下文(,并且有通知声音。但没有本地通知出现。
当我尝试登录iOS设备时,控制台会打印以下输出
default 03:51:53.697535+0100 dasd Daemon Canceling Activities: {(
com.apple.pushLaunch.de.myapp.app:D1FAA2
)}
default 03:51:53.697770+0100 dasd CANCELED: com.apple.pushLaunch.de.myapp.app:D1FAA2 at priority 10 <private>!
我从服务器收到的消息是:
const message = {
data: {
body: JSON.stringify(msgBody),
title: title,
},
contentAvailable: true,
priority: "high",
android: {
priority: "high",
},
apns: {
headers: {
"apns-priority": "10",
"apns-push-type": "alert", //already tried background too
"apns-topic": "de.myapp.app",
},
payload: { aps: { sound: "default", contentAvailable: true } },
},
tokens: userTokens,
};
这让我好几天都快疯了,我无法让它发挥作用。感谢您的每一次帮助
找到了
Version 7.18.0 - August 13, 2020 Cloud Messaging
Deprecated setBackgroundMessageHandler. Use the new API onBackgroundMessage instead.
https://firebase.google.com/support/release-notes/js#cloud-messaging_2
查看他们的文档,他们提到系统在某些条件下有意持有,而不限于…
-
当系统收到新的后台通知时,它会丢弃旧的通知,并且只保存最新的通知。
-
如果某个强制退出或终止应用程序,系统将丢弃
保留的通知。 -
如果用户启动应用程序,系统会立即发送
已持有的通知。
https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/pushing_background_updates_to_your_app