今天 (13.02.2018) 我的产品无法正常工作。我正在使用它们来通知企业门户上服务台中的传入呼叫和应用程序。 我按标签对通知进行了明确的分类。所以我在服务工作者中收到通知:
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 个对象:data
、notification
以前,通知对象包含标签参数,我将其作为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"]
}
直到13.02.2018
我收到了notification
链接:event.data.json().notification
形式:{title: "Ваша заявка обновлена", body: "Статус заявки: ВЫПОЛНЕНА", icon: "images/ManageEngine.jpg", tag: "Helpdesk_Notify"}
我收到了data
链接:event.data.json().data
形式:{channel: "36840"}
2018年2月13日之后
我收到了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