我正在尝试收听Angular 2网络应用中服务器发送的推送通知。我初始化了一个ServiceWorker服务工作者脚本(sw.js
)并注册了推送通知,如下所示
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/app/sw.js', { scope: '/app/' }).then(function(reg) {
// registration worked
console.log('Registration succeeded. Scope is ' + reg.scope);
// register for push notifications
reg.pushManager.subscribe({
userVisibleOnly: true;
}).then(
function(subscription) {
console.log('subscription endpoint is ' + subscription.endpoint);
},
function(err) {
console.log(err);
})
}).catch(function(error) {
// registration failed
console.log('Registration failed with ' + error);
});
}
并且在sw.js
中我会听推送事件,即
self.addEventListener('push', function(event) {
console.log('Push message received!', event);
});
这一切都有效:应用程序初始化ServiceWorker
,我可以在ServiceWoker线程中接收推送通知。但是,我希望我的Angular 2应用程序的组件能够监听推送事件,而不仅仅是sw.js
脚本。
如何让应用程序的组件侦听服务工作者收到的推送通知?或者,如何从我的应用中访问ServiceWorkerGlobalScope?