このトピックでは、タイル、トースト、バッジ通知で問題が発生した場合に実行する必要がある最初のトラブルシューティング手順について説明します。これには、ローカル、プッシュ、定期的、スケジュールされた通知などのさまざまな通知方法が含まれます。
特定のエラーのトラブルシューティング
このセクションでは、プッシュ通知の操作中に発生する可能性のある一般的なエラーについて説明します。
- イベント ログを確認する
- プッシュ通知は "200 OK" 応答を受け取りますが、表示されません
- プッシュ通知が "200 OK" 以外のコードを返す
- プッシュ通知チャネルを作成しようとしたときのエラー
イベント ログを確認する
タイルまたはトースト プッシュ通知が期待どおりに表示されない場合は、イベント ログを確認してください。
- 通知が受信されたが表示されない場合: イベント ビューアーを起動し、アプリケーションとサービス\Microsoft\Windows\Apps の下にある Microsoft-Windows-TWinUI/Operational ログを調べます。
- 通知がまったく受信されない場合: イベント ビューアーを起動し、Applications and Services\Microsoft\Windows\PushNotifications-Platform の操作ログを調べます。
プッシュ通知は "200 OK" 応答を受け取りますが、表示されません
Windows プッシュ通知サービス (WNS) から "200 OK" 応答が返された場合、クライアントがオンラインの場合はクライアントに通知が配信されます。 クライアントがオンラインで、通知が表示されていないことを確認した場合は、次の手順を実行します。
原因: 通知コンテンツの XML エラー。
修正: 基本的な XML 構文を確認し、XML が完全で正しいことを確認します。 XML コンテンツの一般的な障害点には、次のようなものがあります。
- 大文字と小文字の区別。 タグ名、属性名、属性値はすべて、大小文字の区別があります。 XML の大文字と小文字が正しいことを確認してください。
- サポートされているタイル形式ごとに バインド 要素を指定する必要があります。 送信する各通知でサポートするタイル サイズごとに バインド 要素を指定する必要があります。
- テキスト文字列には、予約済みの XML 文字を含めてはなりません。 たとえば、<i> と </i> のタグを含めても、タイル文字列やトースト文字列を斜体にすることはできません。 リテラル文字列 "<i>" を表示する場合は、正しくエスケープする必要があります。 XML でのエスケープ文字の詳細については、「 XML 文字エンティティと XAML」を参照してください。
- lang 属性に指定する値は、ITEF BCP 47 仕様に準拠している必要があります。
- プッシュ通知を通じて送信される XML 文字列では、UTF-8 エンコードを使用する必要があります。
- 空でない src 属性を持つ イメージ 要素を XML ペイロードに含める場合は、有効なイメージへの参照を必ず含める必要があります。そうしないと、通知が削除されます。
原因: プッシュ通知 API パラメーターの不適切な使用
修正: 詳細については、 Windows.Networking.PushNotifications 名前空間の API ドキュメントを参照してください。
原因: ヘッダーの種類が通知の内容と一致しません。 X-WNS-Type ヘッダーが、ペイロードで指定された通知テンプレートに対応する値 (タイル、バッジ、トースト) に設定されていない場合、通知は表示されません。 この不一致により、クライアントでエラーが発生し、通知が削除されます。
修正: アプリ サーバーが X-WNS-Type ヘッダーの正しい値を使用していることを確認するには、 プッシュ通知サービスの要求ヘッダーと応答 ヘッダーを参照してください。
原因: X-WNS-TTL ヘッダーに設定されている Time to Live (TTL) 値が小さすぎます。
修正: 値が秒単位で与えられていることに注意して、より大きな TTL 値を指定します。
前の手順の項目に対処しても通知が表示されない場合は、このトピックの「ローカル タイル通知が表示されない」セクションのローカル通知のトラブルシューティング手順を参照してください。
プッシュ通知が "200 OK" 以外のコードを返す
WNS が "200 OK" を返さない場合、通知はクライアントに配信されません。 リターン コードが 400 秒の場合、開発者は問題を解決できる必要があります。
注
ここに記載されていないエラーについては、 COM エラー コード (WPN、MBN、P2P、Bluetooth) を参照してください。
- 通知要求が "400 Bad Request" を返す
- 通知要求が "401 Unauthorized" を返す
- 通知要求から "401 Unauthorized" が返され、トークンの有効期限が切れています
- 通知要求が "403 Forbidden" を返す
- 通知要求が "404 Not Found" を返す
- 通知要求が "406 Not Acceptable" を返す
- 通知要求が "410 Gone" を返す
通知要求が "400 Bad Request" を返す
原因: 1 つ以上の WNS ヘッダーの使用が正しくないか、HTTP 要求が無効である可能性があります。
修正: 説明に従って、アプリ サーバーがすべてのカスタム ヘッダーを使用していることを確認するには、 プッシュ通知サービスの要求ヘッダーと応答 ヘッダーを参照してください。
通知要求が "401 Unauthorized" を返す
原因: アプリ サーバーでは、アプリを登録するときに、適切なパッケージ セキュリティ識別子 (パッケージ SID) とシークレット キーを使用する必要があります。 Windows ストア ダッシュボードでシークレット キーを最近変更した場合は、アプリ サーバーも更新する必要があります。
修正: Windows StoreDashboard にアクセスして、パッケージ SID とシークレットを確認します。
通知要求から "401 Unauthorized" が返され、トークンの有効期限が切れています
原因: アクセス トークンの有効期間は有限です。 有効期限が切れたアクセス トークンを含む通知を送信した場合、アプリ サーバーの資格情報は無効であり、通知を送信できません。
修正: パッケージ セキュリティ識別子 (パッケージ SID) とシークレット キーを使用して WNS で認証することで、WNS から新しいアクセス トークンを要求します。 詳細については、Windows プッシュ通知サービス (WNS) の概要を参照してください。
通知要求が "403 Forbidden" を返す
原因: このエラーは、表示したアクセス トークンが、対応するチャネル URL に通知を送信するために必要な資格情報と一致しない場合に発生します。 アプリ サーバーの資格情報を受け取るために、すべてのアプリを Windows ストアに登録する必要があります。 アプリごとに、Windows ストアによって提供される資格情報のみを使用してそのアプリに通知を送信でき、その特定のアプリに対してのみ使用できます。
修正: 開発者アカウントを使用して Windows ストア ダッシュボードにログインします。 アプリを選択し、[Advanced Features]\(高度な機能\) -> [Manage your cloud service settings]\(クラウド サービス設定の管理\) をクリックします。 クラウド サービスの資格情報と一致するようにアプリ マニフェストを更新する手順を読むには、[アプリの識別] を選択します。
通知要求が "404 Not Found" を返す
原因: このエラーは、通常、チャネル URL が正しく形成されていないことを意味します。 WNS に通知を送信するときに、チャネル URL を改ざんしたり変更したりしてはなりません。 チャネル URL は常に不透明な文字列として扱う必要があります。その内容を調べたり知ったりする必要はありません。
修正: 1 つ以上の文字を変更するかエンコードを変更して、コードがチャネル URL を変更しないことを確認します。
通知要求が "406 Not Acceptable" を返す
原因: WNS には、悪意のあるアプリが他のユーザーや開発者のサービスに悪影響を与えるのを防ぐための保護ポリシーが用意されています。 短すぎる期間に過剰な数の通知が発生すると、WNS によって明示的に通知が削除される可能性があります。
修正: 通知の頻度を確認して、より優れたユーザー エクスペリエンスを実現するために、通知を減らしたり最適化したりできるかどうかを確認します。
通知要求が "410 Gone" を返す
原因: チャネル URL の有効期限が切れています。 アプリが実行され、新しいチャネル URL が要求されるまで、それ以上の通知は送信できません。
修正: Windows ストア アプリは、起動されるたびにチャネル URL を要求する必要があります。 割り当てられているチャネル URL は、同じままであるとは限りません。 URL が変更された場合、クライアントはクラウド サーバー上の情報を更新する必要があります。
プッシュ通知チャネルを作成しようとしたときのエラー
- 通知チャネルを作成すると、ERROR_NO_NETWORK エラーが発生する
- 通知チャネルを作成すると、WPN_E_CLOUD_INCAPABLE エラーが発生する
- 通知チャネルを作成すると、WPN_E_INVALID_APP エラーが発生する
注
ここに記載されていないエラーについては、 COM エラー コード (WPN、MBN、P2P、Bluetooth) を参照してください。
通知チャネルを作成すると、ERROR_NO_NETWORK エラーが発生する
原因: WNS では、通知チャネルを作成するためにインターネット接続が必要です。
修正: インターネット接続を確認します。
通知チャネルを作成すると、WPN_E_CLOUD_INCAPABLE エラーが発生する
原因: アプリがアプリ マニフェスト (package.appxmanifest) でインターネット機能を宣言していません。
修正: アプリ マニフェストでインターネット機能が宣言されていることを確認します。 Visual Studio マニフェストエディターの [機能] タブには、このオプションとして インターネット (クライアント)が表示されます。 詳細については、「 機能」を参照してください。
通知チャネルを作成すると、WPN_E_INVALID_APP エラーが発生する
原因: アプリで有効なパッケージ名を使用する必要があります。 まだ受け取っていない場合は、Windows ストア ポータルの [高度な機能] で入手できます。
修正: Windows ストア アプリのパッケージ セキュリティ識別子 (PKSID) の取得の詳細については、「 Windows プッシュ通知サービス (WNS) の概要」を参照してください。
問題をレポートする
このトピックで提案されている解決策を試しても問題が解決していない場合は、 Microsoft フォーラム にメッセージを投稿して、Microsoft 開発者や他の関係者と話し合ってください。
プッシュ通知の場合は、問題の説明に加えて、チャネル URL と、HTTP エラー コードと HTTP ヘッダーの両方を含む WNS から受信した応答の例を指定するように求められる場合があります。 問題を報告するときにアプリ サーバーがログに記録する必要がある特定のヘッダーがあります。 詳細については、「プッシュ通知サービスの要求ヘッダーと応答ヘッダー」を参照してください。
Windows developer