0

プッシュ通知を送信するためにPushManagerを購読しようとしていますが、購読を呼び出すと常にエラーが発生します。プッシュ通知を購読できません

これは私のあなたが見ることができるよう

registration.pushManager.subscribe({ userVisibleOnly: true }) 
    .then(function (subscription) { /* ... */}) 
    .catch(function (err) { /* ... */}) 

何も奇妙な呼び出し、その呼び出しは常に

のDOMExceptionを投げている購読:登録に失敗しました - プッシュサービスのエラーを

Iなぜそれが分かりませんか?私はこれまで

  • をチェックしました何 私は私のmanifest.jsongcm_sender_id性質を持っています。
  • 通知のパーミッションはクライアントで付与されます。
  • registration.pushManager.getSubscription()は常にnullとなり、サブスクライブは常に上記のエラーをスローします。

他に何を見ますか?プッシュ通知を正常に購読するためのヘルプは歓迎されています。クロム55を使用しています。詳細が必要な場合は、私に知らせてください。

EDIT:すべての登録コードはregisterServiceWorker機能のhereです。

ありがとうございました。私は私ではなく、あなたのよう window.location.origin を使用するので行ったように、あなたのサービスワーカーのために相対パスを使用することをお勧め

navigator.serviceWorker.register('/serviceworker.js', { 
       scope: '/' 
      }); 

:あなたのようなものを使用して、適切にサービスワーカーを登録していると仮定すると、

答えて

2

あなたのコードで行いましたが、serviceworkerファイルをのルートに保存する方が常に良いです。

プッシュをサブスクライブしてエンドポイントを取得するには、この方法を使用します。

navigator.serviceWorker.ready 
      .then(function(serviceWorkerRegistration) { 
       return serviceWorkerRegistration.pushManager.subscribe({ 
        userVisibleOnly: true 
       }); 
      }) 
      .then(function(subscription) {console.log(subscription.endpoint);}); 

それはまだ動作しない場合:Chromeから既存の労働者を登録解除 -Try:// serviceworker-内部を、あなたがそれを行うときは、すべてのタブを閉じることを確認してください。

まだ動作しない場合: - chromeの右上にあるあなたの名前をクリックして、新しいChromeプロファイルを作成してください。 (私はこれに一度直面した)

thisコードを参照してください。

+0

誰かが別のルートに移動したときにサービスワーカーのエラーが見つかりませんでしたので、 'scope.'オプションで解決できるかもしれないので、' window.location.origin'を使用しました。残りのコードはあなたの答え –

+0

と同じです。いくつかの検索の後、私は私の解決策を見つけました。私は 'manifest.json'ファイルに間違った' gcm_sender_id'を使っていました。私は[プロジェクト番号で変更しました](https:// github。com/YerkoPalma/blank-app-shell/commit/34cd59cfb37e6247f3d8bdc69b94e926753052ad#diff-4b1eb3dc48c4e16d49db5b42298fe654)、うまくいきました。 –

+0

:)あなたのために良い!しかし、それは問題ではないはずです。誤ったgcm_sender_idの問題に直面するのは、プッシュをトリガーしていて、購読していないときだけです。私はあなたのためのトリックをした根の範囲を推測しています! :) –