我使用angularjs并使用服务工作者接收推送通知.但navigator.serviceWorker.controller在页面刷新之前为空,我不知道如何解决这个问题
一些维修工作者的代码:
self.addEventListener('push', pwServiceWorker.pushReceived);
self.addEventListener('notificationclick', pwServiceWorker.notificationClicked);
// refresh caches
self.addEventListener('activate', function (event)
{
event.waitUntil(
caches.keys().then(function (cacheNames)
{
return Promise.all(
cacheNames.map(function (cacheName)
{
return caches.delete(cacheName);
})
);
})
);
});
Run Code Online (Sandbox Code Playgroud)
并在收到推送时向serviceworker中的客户端发送消息:
self.clients.matchAll().then(function(all) {
console.log(all);
all.forEach(function(client) {
client.postMessage(data);
});
});
Run Code Online (Sandbox Code Playgroud)
在mainController.js中给出如下消息:
if (!navigator.serviceWorker || !navigator.serviceWorker.register) {
console.log("This browser doesn't support service workers");
return;
}
// Listen to messages from service workers.
navigator.serviceWorker.addEventListener('message', function(event) {
console.log("Got reply from service worker: " + event.data);
});
// Are we being controlled?
if (navigator.serviceWorker.controller) {
// …Run Code Online (Sandbox Code Playgroud)