我不确定我在哪里弄错了。
我想注册一名服务工作者,当它被“激活”的那一刻 向我的服务器发出XHR请求以存储订阅数据。
self.addEventListener('activate', function(event) {
console.log('Activated', event);
event.waitUntil(
self.registration.pushManager.getSubscription().then(function (subscription) {
console.log(subscription);//this is always null
})
)
})
到目前为止,我无法在SW内获得订阅,我可以从网站上的任何其他JavaScript获取。我不喜欢什么?
编辑:
这是我注册pushmanager的方式
function reg(){
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register(SW).then(function(reg) {
reg.pushManager.subscribe({
userVisibleOnly: true
}).then(function(subscription) {
send_subscription(subscription);
});
}).catch(function(error) {
console.log(':^(', error);
});
}
}
function send_subscription(subscription){ [...] }
答案 0 :(得分:1)
您正在尝试订阅PushManager
:
PushManager接口的PushManager.getSubscription()方法检索现有的推送订阅。
如果是这样,您首先必须使用PushManager.subscribe()
订阅PushManager
。