Web推送FCM,通知中的标签

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web推送FCM,通知中的标签相关的知识,希望对你有一定的参考价值。

今天(13.02.2018)我的产品不能正常工作。我正在将它们用于公司门户网站服务台上的来电和应用程序的通知。我有一个明确的标签分类通知。所以我在serviceworker中收到通知:

self.addEventListener('push', function(event) {
    event.waitUntil(
        self.registration.pushManager.getSubscription().then(function(subscription) {
            if(event.data.json().notification.tag == 'Asterisk_Incomming'){
                if(typeof(event.data.json().data) == "undefined"){
                    return NotifyIncomming(event.data.json());
                }else {
                    return NotifyIncommingCall(event.data.json());
                }
            }else if(event.data.json().notification.tag == 'Asterisk_Queue'){
                return NotifyIncomming(event.data.json());
            }else if(event.data.json().notification.tag == 'Assistant_Notify'){
                return NotifyIncomming(event.data.json());
            }else if((event.data.json().notification.tag == 'Helpdesk_Notify') || (event.data.json().notification.tag == 'Helpdesk_Notify_Tech')){
                return NotifyHelpdesk(event.data.json());
            }else{
                return NotifyIncomming(event.data.json());
            }
            })
            .catch(function(err) {
                console.error('Невозможно получить данные с сервера: ', err);
            })
    );  
});

在事件中,我可以获取event.data.json()中的数据我将需要2个对象:datanotification以前,通知对象包含tag参数,我把它作为event.data.json().notification.tag但是现在标签包含在数据中(引用全部内容对象):

{gcm.notification.tag: "Helpdesk_Notify", channel: "36840"}

但第一个对象引用无效。这是一个错误还是不断变化?如何从数据中获取标签?

即我以下列形式将JSON发送到https://fcm.googleapis.com/fcm/send(使用授权令牌):

{
"notification":{
    "body":"Статус заявки: ВЫПОЛНЕНА",
    "icon":"images/ManageEngine.jpg",
    "tag":"Helpdesk_Notify",
    "title":"Ваша заявка обновлена"
},
"data":{
    "channel":"36840"
},
"registration_ids": ["c4CfPHwLp7s:APA91bG3sf-0ua1RlhkcnTb6xuUWB46rg-grtdPfUYF7Ji8aw2awKTgRAoTP3CAiL-Fyjqk6FbwxOElV6qN8JQZIqLusiDed77OatEzj4Ae-hs3021wt2_gi4AeiRRnl3y6ToPBPY6em"]
}

直到2014年2月13日

我收到notification链接:event.data.json().notification形式:{title: "Ваша заявка обновлена", body: "Статус заявки: ВЫПОЛНЕНА", icon: "images/ManageEngine.jpg", tag: "Helpdesk_Notify"}

我收到data链接:event.data.json().data形式:{channel: "36840"}

在19.02.2018之后

我收到了notification的形式:{title: "Ваша заявка обновлена", body: "Статус заявки: ВЫПОЛНЕНА", icon: "images/ManageEngine.jpg"}

我收到了data的形式:{gcm.notification.tag: "Helpdesk_Notify", channel: "36840"}

我可以将标记作为附加参数传递给数据,但我不喜欢这个选项。

答案

直到我发现没有什么比将标签转移到对象data并因此解析它(如果没有收到对象data我必须提供异常情况),最后查询变为以下形式:

{
"notification":{
    "body":"Статус заявки: ВЫПОЛНЕНА",
    "icon":"images/ManageEngine.jpg",
    "tag":"Helpdesk_Notify",
    "title":"Ваша заявка обновлена"
},
"data":{
    "channel":"36840",
    "tag":"Helpdesk_Notify"
},
"registration_ids": ["c4CfPHwLp7s:APA91bG3sf-0ua1RlhkcnTb6xuUWB46rg-grtdPfUYF7Ji8aw2awKTgRAoTP3CAiL-Fyjqk6FbwxOElV6qN8JQZIqLusiDed77OatEzj4Ae-hs3021wt2_gi4AeiRRnl3y6ToPBPY6em"]
} 

也许从notification对象中排除标签是有意义的,但我已经

我通过引用得到了标签:event.data.json().data.tag那些。类似的东西:

if(typeof(event.data.json().data) == "undefined"){
    tag = 'StandartNotify';
}else {
    tag = event.data.json().data.tag;
}
另一答案

如果它对您有所帮助:我在通知有效负载的“标签”选项上遇到了类似的问题,也与您的日期相同。在我的情况下,通知不会在任何设备上被覆盖(通知具有相同的“标签”)。

我在他们的支持下开了一张票,他们认出我这是一个错误(2月21日)。

他们没有告诉我更多信息,只对发布页面保持警惕。

https://firebase.google.com/support/releases

以上是关于Web推送FCM,通知中的标签的主要内容,如果未能解决你的问题,请参考以下文章

从 web 上的 fcm 向现有 gcm 用户发送推送通知

Web 推送通知 FCM 是不是可以在 iPhone 和 iPad 设备上使用?

使用FCM从服务器发送推送通知

FCm 错误 = 在 reactjs 中的推送通知上缺少注册?

Angular 6 Web 应用程序中推送通知的 FCM 设置

使用 FCM 推送通知时颤动中的 Kotlin 文件错误