激活sw

时间:2016-07-04 13:46:28

标签: javascript service-worker

我不确定我在哪里弄错了。

我想注册一名服务工作者,当它被“激活”的那一刻 向我的服务器发出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){ [...] }

1 个答案:

答案 0 :(得分:1)

您正在尝试订阅PushManager

  

PushManager接口的PushManager.getSubscription()方法检索现有的推送订阅。

如果是这样,您首先必须使用PushManager.subscribe()订阅PushManager