Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 激活软件后获取订阅_Javascript_Service Worker - Fatal编程技术网

Javascript 激活软件后获取订阅

Javascript 激活软件后获取订阅,javascript,service-worker,Javascript,Service Worker,我不确定我在哪里犯了错误 我想注册一名服务人员,当它“激活”时 向我的服务器发出XHR请求以存储订阅数据 self.addEventListener('activate', function(event) { console.log('Activated', event); event.waitUntil( self.registration.pushManager.getSubscription().then(function (subscription) {

我不确定我在哪里犯了错误

我想注册一名服务人员,当它“激活”时 向我的服务器发出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

        })
    )
})
到目前为止,我无法在软件内部获得订阅,我可以从网站上的任何其他javascript获得订阅。我站不住的是什么

编辑:

这是我注册为经理的方式

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){ [...] }

您正在尝试获取对以下内容的订阅:

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


如果要这样做,您首先必须使用订阅
PushManager

对,我忘了补充一点,我确实订阅了
PushManager
,我发现的问题是,当我这样做时,即使承诺将
getSubscription()
发送到服务器,它也无法工作,用户必须重新加载。基本上,我试图订阅用户推送消息并立即发送订阅数据。@sathia请添加订阅问题的代码。