如何折叠FCM发送的Web推送通知



我使用带有firebase管理员的FCM为多个客户端发送Web推送通知。我想用新邮件替换旧邮件。

我就是这样称呼它的:

return await admin.messaging().sendMulticast({
tokens,
notification: {
title: "Message Title",
body: "Message body.",
},
data: {
type: "ring",
callId,
},
webpush: {
fcmOptions: {
link: process.env.PWA_APP_URL,
},
headers: {
Urgency: "high",
},
},
android: {
collapseKey: "ring",
priority: "high",
ttl: 10,
notification: {
color: "#ff0000",
defaultSound: true,
sound: "default",
lightSettings: {
color: "#ffcc00",
lightOffDurationMillis: 1000,
lightOnDurationMillis: 1000,
},
tag: "ring",
vibrateTimingsMillis: [1000, 1000],
visibility: "public",
priority: "max",
},
},
});

当消息到达Android应用程序客户端时,由于android.collapseKey属性,该消息已崩溃。但是我在我的web应用程序中无法获得相同的行为。

根据文档,Web通知有一个Topic选项,但我不确定该放在哪里。我试图将其用作webpush.headers.Topic属性,但没有成功。消息不会在Android/Chrome中折叠。

我做错了什么?

我遵循了collimanco的提示,可以使用showNotification方法来折叠通知。

在firebase admin/server代码中,我不得不删除消息负载中的通知字段。现在它只是一条数据消息:

return await admin.messaging().sendMulticast({
tokens,
data: {
type: "ring",
callId,
},
});

在web应用程序中,我创建了一个后台消息处理程序。现在,当新消息到达时,我可以使用renotify=truetag属性调用showNotification方法。

messaging.setBackgroundMessageHandler(function (payload) {
// ...
return self.registration.showNotification("Message Title", {
body: "Message body.",
tag: "ring",
renotify: true,
vibrate: [1000, 1000],
});
});

如果只在消息有效负载上设置这些属性,那就太好了。

相关内容

  • 没有找到相关文章