我正在尝试使用GCM推送通知,能够在推送事件上显示硬编码数据或消息的通知。但是当我尝试使用数据对象作为Json推送自定义消息时,推送事件正在触发,但是,数据对象总是以空显示。
Service worker代码:sw.js
self.addEventListener('push', function(event) {
console.log('Received a push message', event);
console.log("event data",event.data);//here data is giving as null
var data=event.data.json();
var title= data.title||'No tiltle';
var body= data.message||'no messgae';
event.waitUntil(
self.registration.showNotification(title, {
body: body,
icon: icon,
tag: tag
})
);
});
我使用第三方网站(requestmaker.com)来检查通知。我发送的格式如下
URL:https://android.googleapis.com/gcm/send
content-type:application/json
authorization:key=XXXXXXXXXX
下面是数据格式
{
"registration_ids":["someid"],
"data":{"title":"hai",
"body":"hello new message"
}
}
我如何在Push事件中获得数据,并以哪种格式发送数据作为请求,以便我可以在Push事件(Event .data)上获得该数据
您可以访问通知点击触发事件的数据。
self.addEventListener('notificationclick', function(event) {
// here data you access from event using event.notification.data
console.log('On notification click: ', event.notification.tag);
}
推送通知触发后,负载数据不会被发送给service worker。在触发要发送的有效负载的推送通知时,您必须使用浏览器验证密钥。
请参考下面的文档了解详细信息。https://developers.google.com/web/updates/2016/03/web-push-encryption?hl=en