2016-07-04 54 views
1

我不確定我犯了什麼錯誤。getSubscription激活sw後

我想註冊一個服務人員,當它被「激活」 向我的服務器發出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。我不是在說什麼?

編輯:

我這是怎麼註冊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

您正在試圖將認購到PushManager

的的PushManager.getSubscription()方法PushManager接口檢索現有的推送訂閱。

如果這是有意的,您首先必須使用PushManager.subscribe()訂閱PushManager

+0

對,我忘了補充一點,我確實訂閱了一個PushManager,我發現的問題是,即使有承諾向服務器發送getSubscription(),它也不會' t工作並且用戶必須重新加載。基本上我試圖訂閱用戶推送消息並立即發送訂閱數據。 – sathia

+0

@sathia請添加正在訂閱您的問題的代碼。 – sdgluck

+0

我已經添加了reg()代碼。 – sathia