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){ [...] }
私は実際に 'PushManager'を購読していることを忘れてしまいました。私が見つけた問題は、' getSubscription() 'をサーバーに送るという約束があっても、ユーザーはリロードする必要があります。基本的には、私はメッセージをプッシュし、すぐにサブスクリプションデータを送信するためにユーザーを購読しようとしています。 – sathia
@sathiaあなたの質問に登録しているコードを追加してください。 – sdgluck
私はreg()コードを追加しました。 – sathia