ウェブプッシュで問題が発生すると、問題のデバッグや ヘルプをご覧ください。このドキュメントでは、いくつかの一般的な問題と、 Chrome や Firefox にバグが見つかった場合に実行する手順です。
push のデバッグについて説明する前に、デバッグで問題が発生する可能性があります。 Service Worker 自体、ファイルが更新されない、登録に失敗する、 検出します。こちらの Service Worker のデバッグに関する優れたドキュメント Chronicle を初めて使用する場合は、 Service Worker で開発されました。
ウェブプッシュの開発とテストでは、2 つの異なるステージをチェックする必要があります。 それぞれに一般的な問題 / 問題があります。
- メッセージの送信: メッセージの送信が成功したことを確認します。
201 HTTP コードが表示されるはずです。上記に該当しない場合 :
<ph type="x-smartling-placeholder">
- </ph>
- 承認エラーを確認する: 承認通知が届いた場合 エラー メッセージについては、 認証に関する問題のセクションをご覧ください。
- その他の API エラー: 201 以外のステータス コードのレスポンスを受け取った場合は、 詳しくは、HTTP ステータス コードのセクション 問題の原因に関するガイダンスを提供します。
- メッセージの受信: メッセージを正常に送信できる場合は、
ブラウザでメッセージは受信されません。
<ph type="x-smartling-placeholder">
- </ph>
- 暗号化の問題を確認する: ペイロード暗号化 問題のセクションをご覧ください。
- 接続の問題を確認する: Chrome に問題がある場合は、 つながりかもしれません。接続に関する問題のセクションをご覧ください。 をご覧ください。
プッシュ メッセージを送受信できない場合と、 問題のデバッグに役立たない場合は push メカニズム自体にバグがあります。この場合は、このモジュールの バグレポートの提出 セクションに記入し、迅速に対応するために必要な情報がすべて記載された適切なバグレポートを提出します。 バグ修正プロセスに進みます
始める前に、Firefox と Mozilla AutoPush Service には、わかりやすいエラー メッセージがあります。行き詰まったときに 原因が不明な場合は、Firefox でテストして、 より有用なエラー メッセージが表示されます。
承認に関する問題
承認に関する問題は、デベロッパーが対処する際に まずはウェブプッシュですこの問題は通常、VM の構成上の サイトのアプリケーション サーバー キー(VAPID キー) 。
Firefox と Chrome の両方でプッシュをサポートする最も簡単な方法は、
subscribe()
呼び出しで applicationServerKey
。マイナス面は
フロントエンドとサーバーのキーに不一致があると、
承認エラーになります。
Chrome と FCM の場合
FCM を push サービスとして使用する Chrome では、
さまざまな FCM からの UnauthorizedRegistration
レスポンス
すべてアプリケーション サーバーのキーに関連するエラーです。
次のいずれかで UnauthorizedRegistration
エラーが発生します。
次のような状況になります。
- FCM へのリクエストで
Authorization
ヘッダーを定義できない場合。 - ユーザーの登録に使用されたアプリケーション キーが、使用されているキーと一致しません Authorization ヘッダーに署名します。
- JWT で有効期限が無効です。つまり、有効期限が 24 時間を超えている、または JWT の有効期限が切れています。
- JWT の形式が正しくないか、JWT の値が無効です。
完全なエラー レスポンスは次のようになります。
<html>
<head>
<title>UnauthorizedRegistration</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<h1>UnauthorizedRegistration</h1>
<h2>Error 400</h2>
</body>
</html>
Chrome でこのエラー メッセージが表示された場合は、Firefox でテストして、 問題に関する詳しい分析情報が得られるかもしれません。
Firefox および Mozilla AutoPush
Firefox と Mozilla AutoPush には、エラー メッセージがわかりやすく
Authorization
件の問題。
また、以下から Unauthorized
エラー レスポンスも受け取ります。
Mozilla AutoPush(プッシュに Authorization
ヘッダーが含まれていない場合)
リクエストできます。
{
"errno": 109,
"message": "Request did not validate missing authorization header",
"code": 401,
"more_info": "http://autopush.readthedocs.io/en/latest/http.html#error-codes",
"error": "Unauthorized"
}
JWT の有効期限が過ぎている場合は、
Unauthorized
エラーと、トークンに次のトークンが含まれていることを説明するメッセージ
期限切れになりました。
{
"code": 401,
"errno": 109,
"error": "Unauthorized",
"more_info": "http://autopush.readthedocs.io/en/latest/http.html#error-codes",
"message": "Request did not validate Invalid bearer token: Auth expired"
}
ユーザーが
登録され、Authorization ヘッダーが署名されると、Not Found
次のエラーが返されます。
{
"errno": 102,
"message": "Request did not validate invalid token",
"code": 404,
"more_info": "http://autopush.readthedocs.io/en/latest/http.html#error-codes",
"error": "Not Found"
}
最後に、JWT に無効な値がある場合(たとえば、「alg」値に 予期しない値だった場合は、Mozilla から次のエラーが表示されます。 AutoPush:
{
"code": 401,
"errno": 109,
"error": "Unauthorized",
"more_info": "http://autopush.readthedocs.io/en/latest/http.html#error-codes",
"message": "Request did not validate Invalid Authorization Header"
}
HTTP ステータス コード
さまざまな問題によって、サーバーから 201 以外のレスポンス コードが返される可能性があります。 使用できます。以下に、HTTP ステータス コードとその意味の一覧を示します。 あります。
ステータス コード | 説明 |
---|---|
429 | リクエスト数が多すぎます。アプリケーション サーバーがレート制限に達しました。 使用できます。サービスからのレスポンスに「Retry-After」が含まれているはずです。ヘッダーを 別のリクエストを実行できるまでの時間を指定します。 |
400 | 無効なリクエストです。いずれかのヘッダーが無効であるか、 見落とされがちです。 |
404 | 見つかりませんでした。この場合、ストレージから PushSubscription を削除し、 ユーザーが再度登録できるようになるまでお待ちください。 |
410 | なくなった。サブスクリプションが無効になったため、サブスクリプションから削除してください バックエンドですこの問題は、 `PushSubscription`. |
413 | ペイロード サイズが大きすぎます。push サービスに必要な最小サイズのペイロード 4,096 バイト(4 KB)です。これより大きい値を指定すると、このエラーが発生します。 |
HTTP ステータス コードがこのリストになく、エラー メッセージが 詳細については、ウェブプッシュ プロトコル 仕様を参照し、 そのステータス コードがいつ使用可能になるのかを示すシナリオとともに、 使用できます。
ペイロードの暗号化に関する問題
プッシュ メッセージを正常にトリガーできる場合(つまり、ウェブ 201 レスポンス コードを受け取る)であっても、push イベントは これは通常、ブラウザがエラーに 受信したメッセージを復号します。
その場合は、Firefox の DevTools にエラー メッセージが表示されます。 変更します。
Chrome でこの問題が発生しているかどうかを確認するには、次の手順を行います。
- about://gcm-internals にアクセスして [Start Recording] をクリックし、] ボタンを離します。
- push メッセージをトリガーし、「Message Decryption Failure Log」を調べます。
ペイロードの復号に問題がある場合は、エラーが表示される
例を示します。(AES-GCM decryption failed
メッセージが表示されます)。
この問題が発生している場合、暗号化のデバッグに役立つツールをいくつか紹介します。
接続の問題
Service Worker で push イベントを受信しておらず、 復号エラーが表示された場合は、ブラウザが push サービスを使用します
Chrome では、ブラウザがメッセージを受信しているかどうかを確認するには、
'メッセージログの受信'(sic)about://gcm-internals
。
メッセージがタイムリーに届かない場合は、
ブラウザの接続ステータスが CONNECTED
です。
[接続済み] でない場合は、現在のプロフィールを削除して 新規作成してください。もしそうなら で問題が解決しない場合は、以下の手順に沿ってバグレポートを提出してください。
バグレポートを生成中
上記のいずれの方法も問題を解決できず、 問題が発生している可能性があります。使用しているブラウザに関する問題を提起してください 以下に関する問題:
Chrome の場合は、次の場所で問題を報告します。 https://bugs.chromium.org/p/chromium/issues/list Firefox の場合は、次の場所で問題を報告する必要があります。 https://bugzilla.mozilla.org/
適切なバグレポートを提供するには、次の詳細情報をご提供ください。
- テストに使用したブラウザ(Chrome バージョン 50、Chrome バージョン 51、Firefox など) Firefox バージョン 51 など)に対応しています。
- 問題を示す
PushSubscription
の例。 - リクエストの例(つまり、ネットワーク リクエストのコンテンツを push や 。
- ネットワーク リクエストからのサンプル レスポンスもすべて含めてください。
再現可能なサンプル(ソースコードまたはホストされているウェブ)をご提供いただける場合は、 多くの場合、問題の診断と解決がスピードアップします。
次のステップ
- ウェブのプッシュ通知の概要
- Push の仕組み
- ユーザーを登録する
- 権限の UX
- ウェブプッシュ ライブラリを使用したメッセージの送信
- ウェブプッシュ プロトコル
- push イベントの処理
- 通知を表示する
- 通知の動作
- 一般的な通知パターン
- プッシュ通知に関するよくある質問
- 一般的な問題とバグの報告