Flutter - 背景通知在 iOS 中不起作用
Flutter - Background notifications not working in iOS
我正在 Flutter 中创建一个 public 聊天应用程序,但我 无法 在 iOS,当我从我的 Cloud Function 触发方法 admin.messaging().send(payload)
时。
这是我在 Cloud Function 中的负载:
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-priority”更改为 5
- 我尝试使用令牌而不是主题
我仔细设置了所有我需要的配置,感谢官方文档:
https://firebase.flutter.dev/docs/messaging/usage/
我还检查了 Github 个问题,例如这些问题:
1041, 6112, 5988, 1644, 4300, 4097
什么是有效的:
- Android 和 iOS 上的后台和前台通知,当从 Firebase 控制台发送时(在 'Cloud Messaging' 部分)
- 仅在 Android 上从 Cloud Function
发送后台和前台通知
- iOS 上的前台通知,当从 Cloud Function
发送时
什么不起作用:
- iOS 从 Cloud Function 发送时的后台通知
- 当应用程序终止时,它也无法正常工作。
我终于解决了这个问题!
我只是删除了负载中的 "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"
};
我正在 Flutter 中创建一个 public 聊天应用程序,但我 无法 在 iOS,当我从我的 Cloud Function 触发方法 admin.messaging().send(payload)
时。
这是我在 Cloud Function 中的负载:
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-priority”更改为 5
- 我尝试使用令牌而不是主题
我仔细设置了所有我需要的配置,感谢官方文档: https://firebase.flutter.dev/docs/messaging/usage/
我还检查了 Github 个问题,例如这些问题: 1041, 6112, 5988, 1644, 4300, 4097
什么是有效的:
- Android 和 iOS 上的后台和前台通知,当从 Firebase 控制台发送时(在 'Cloud Messaging' 部分)
- 仅在 Android 上从 Cloud Function 发送后台和前台通知
- iOS 上的前台通知,当从 Cloud Function 发送时
什么不起作用:
- iOS 从 Cloud Function 发送时的后台通知
- 当应用程序终止时,它也无法正常工作。
我终于解决了这个问题!
我只是删除了负载中的 "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"
};