无法加载数据URL为chrome浏览器的GCM推送通知'notificationclick'事件
Not able to load data URL for GCM push notification for chrome in 'notificationclick' event
在为Chrome开发GCM推送通知时,我已经为service worker接收到GCM的推送事件设置了推送通知。
我正在启动一个服务调用。该服务返回一个数据对象其中有一个URL我希望在用户点击通知
时打开该URL这是我到目前为止的代码。
Var urlOpen = null;
self.addEventListener('push', function(event) {
event.waitUntil(
fetch(serviceLink).then(function(response) {
if (response.status !== 200) {
console.log('Looks like there was a problem. Status Code: ' +
response.status);
throw new Error();
}
return response.json().then(function(data) {
console.log(data);
var title = data.title;
var body = data.desc;
var icon = data.image;
var tag = 'notification tag';
urlOpen = data.clickUrl;
return self.registration.showNotification(title, {
body: body,
icon: icon,
tag: tag
})
});
})
);
});
self.addEventListener('notificationclick', function(event) {
event.waitUntil(
clients.openWindow(urlOpen).then(function (){
event.notification.close();}));
});
这是正常工作,但有时在某些设备通知。但是当点击通知时,它会打开浏览器url栏中的null
。
我做错了什么?
不能指望你的service worker存在于push
事件和notificationclick
事件之间。在处理了push
事件之后,浏览器很可能会关闭worker,然后为notificationclick
事件重新启动它,这意味着您的urlOpen
变量已被重新初始化为null
。
我认为你可以将url以某种方式存储在通知对象本身,这将是最好的-看起来这里有一个例子。否则你就得保存到indexedDB之类的文件
相关文章:
- 通知全局事件组件的最佳方式
- 如何在jQuery中为通知添加事件onClick
- 当侦听器已附加到 Backbone.Model 事件时获得通知
- 如何通知鼠标事件从 Java 脚本到 Cocoa
- Vaadin窗口中的关闭通知事件
- webview javascript事件通知
- Jquery通知事件触发两次
- 向用户发送与Facebook相同的关于新事件的通知's使用SignalR的通知
- 通知来自XPcom的外部事件的JavaScript
- 当窗口最小化时,提醒用户浏览器内事件——而不是html5通知
- 如何通知客户端's浏览器关于服务器上的一些事件
- 无法加载数据URL为chrome浏览器的GCM推送通知'notificationclick'事件
- 向客人发送新日历事件通知时出现问题——谷歌应用程序
- 制作没有间隔时间的通知器(带有事件)
- 可以一个jQuery ajaxSuccess函数通知在另一个(javascript)文件的AJAX事件?如果是这样,我做
- 主干事件聚合器-当所有事件处理程序完成处理时通知
- 推送通知.应用简历事件处理程序(钛)
- 带有推送事件数据的推送通知
- Web通知的事件侦听器
- 我怎样才能收到通知/事件,当mediaStreamTrack.修改为“启用”