问题描述
我正在将FCM与firebase-admin结合使用,以向多个客户端发送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选项,但是我不确定where to put it。我试图将其用作webpush.headers.Topic
属性,但没有成功。邮件不会在Android / Chrome中折叠。
我在做什么错了?
解决方法
我已关注collimarco's tip,可以使用showNotification method折叠通知。
在firebase-admin / server代码中,我必须删除邮件有效负载中的通知字段。现在只是一个data message:
return await admin.messaging().sendMulticast({
tokens,data: {
type: "ring",callId,},});
在Web应用程序中,我创建了一个background message handler。现在,当我使用带有showNotification
的{{1}}属性发送新消息时,可以调用tag
方法。
renotify=true
仅在消息有效负载上设置这些属性会很棒。