2016-07-04 1 views
1

私は間違いを犯しているのか分かりません。swの起動時にgetSubscription

サービスワーカーを登録し、そのサービスが「アクティブになった」瞬間に登録します 購読データを保存するためにサーバーに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

をpushmanagerための登録方法です:

のPushManager.getSubscription()メソッドPushManagerインタフェースは、既存のプッシュサブスクリプションを取得します。

これが意図されている場合は、まずPushManagerPushManager.subscribe()で購読する必要があります。

+0

私は実際に 'PushManager'を購読していることを忘れてしまいました。私が見つけた問題は、' getSubscription() 'をサーバーに送るという約束があっても、ユーザーはリロードする必要があります。基本的には、私はメッセージをプッシュし、すぐにサブスクリプションデータを送信するためにユーザーを購読しようとしています。 – sathia

+0

@sathiaあなたの質問に登録しているコードを追加してください。 – sdgluck

+0

私はreg()コードを追加しました。 – sathia

関連する問題