【发布时间】:2016-08-18 15:20:47
【问题描述】:
我一直在做推送通知, 当我注册页面然后通过 curl 命令对其进行测试时,我收到了通知!
但是过了一段时间(可能 1-2 分钟),当我关闭推送通知范围已注册的选项卡,然后再次测试通知时,我无法收到通知。这通常发生在手机的谷歌浏览器中。
我在这里所做的解决方法是我需要先转到作用域页面的页面,然后当我再次测试通知时,它现在可以工作了。虽然我不能这样做,因为我需要客户在不一直在网站上的情况下接收通知。
这是我在 service worker 中的推送事件
self.addEventListener('push', function(event) {
var SOME_API_ENDPOINT = "https://somewhre.com/push_notification_api/service_worker_endpoint";
event.waitUntil(
fetch(SOME_API_ENDPOINT, {
method: 'post',
headers: {
"Content-type": "application/x-www-form-urlencoded; charset=UTF-8"
},
body: 'subscription_id=' + subscriptionId
}).then(function(response) {
return response.json().then(function(data) {
var title = data.notification.title;
var message = data.notification.message;
var icon = base + "assets/images/logo_notification.png";
var notificationTag = data.notification.url;
// var notificationTag = 'https://google.com'; //data.notification.tag;
return self.registration.showNotification(title, {
body: message,
icon: icon,
tag: notificationTag
});
});
})
);
});
即使我不在 SW 注册范围的页面中,我如何让我的服务人员 24/7 全天候运行?
我需要使用 eventListeners 'install'、'activate' 和 'fetch' 吗?
【问题讨论】:
标签: javascript push-notification service-worker