Flutter-后台通知在iOS中不起作用



我正在Flutter中创建一个公共聊天应用程序,当我从云功能触发方法admin.messaging().send(payload)时,我无法在iOS上接收后台通知

这是我在云功能中的有效载荷:

var payload = {
notification: {
title: `My Title`,
body: `My message`,
},
android: { priority: "high" },
apns: {
payload: {
aps: {
contentAvailable: true,
},
},
headers: {
"apns-push-type": "background",
"apns-priority": "10",
"apns-topic": "io.flutter.plugins.firebase.messaging", // bundle identifier
},
},
topic: `mytopic`,
};

我尝试了一堆不同的有效载荷:

  • 我尝试了通知+数据
  • 我只尝试了数据(没有通知)(在这种情况下,我必须在本地显示通知,但它不起作用,因为从未调用函数FirebaseMessaging.onBackgroundMessage)
  • 我试图改变";apns优先级";至5
  • 我尝试使用令牌而不是主题

多亏了官方文档,我仔细设置了所有需要配置的内容:https://firebase.flutter.dev/docs/messaging/usage/

我还检查了Github的问题,比如:1041、6112、5988、1644、4300、4097

工作原理:

  • Android和iOS上的后台和前台通知,当从Firebase控制台发送时(在"云消息"部分)
  • 当从云功能发送时,仅限Android上的后台和前台通知
  • iOS上的前景通知,当从云功能发送时

什么不起作用:

  • 从云功能发送时iOS上的后台通知
  • 当应用程序终止时,它无法正常工作

我终于解决了这个问题!

我只是删除了有效负载中的线路"apns-push-type": "background"。现在它正在发挥作用。

看来"apns-topic"线也没有用。

这是我的最后一个有效载荷:

var payload = {
notification: {
title: `# ${context.params.passion}`,
body: `${newMsg["senderPseudo"]} ${
type == "image" ? "a envoyé une image." : `: ${newMsg["message"]}`
}`,
},
// Set Android priority to "high"
android: {
priority: "high",
},
// Add APNS (Apple) config
apns: {
payload: {
aps: {
contentAvailable: true,
},
},
headers: {
//"apns-push-type": "background", // This line prevents background notifications to be displayed
"apns-priority": "10",
},
},
token: "dnqTQVso60GfnnuOjHv8_e:APA91bElr-K3xkQMdYHX8VMrMZNCYCjO4zJlGseRh25AS_GT7cg9zlOGdQl4KXvr88ypeWjZjrPzrLRHitsQ-JKQK057ZQb_36c_lfsNjHXbYMYI2iS3jV_HGWf7Ene-ZlPvOb0aRr8u"
};

作为对自己答案的评论:

你不应该让它空着,因为它可能会导致错误

向APN 发送通知请求

如果不匹配,或者所需系统上缺少标头,APN可能会返回错误、延迟通知传递或完全丢弃通知。

您应该设置的值应该是'alert'

其他apn推送类型值:apns推送类型标题字段值

最新更新