Windows Phone のプッシュ通知の概要

2012/02/09

Windows Phone の Microsoft Push Notification Service はサードパーティの開発者にとって、Web サービスから Windows Phone アプリケーションに効率的にデータを送信できる、回復力と永続性を備えた専用のチャネルです。

次の図では、電話で実行されているクライアント アプリケーションがプッシュ クライアント サービスにプッシュ通知 URI を要求しています (1)。プッシュ クライアント サービスは Microsoft Push Notification Service (MPNS) とネゴシエートして、クライアント アプリケーションに通知 URI を返します (2 および 3)。クライアント アプリケーションは、この URI をクラウド サービスに送信することができます (4)。Web サービス内に、クライアント アプリケーションに送信する情報がある場合、Web サービスはこの URI を使用して Microsoft Push Notification Service にプッシュ通知を送信し (5)、Microsoft Push Notification Service は Windows Phone デバイス上で実行されているアプリケーションにこのプッシュ通知を転送します (6)。

プッシュ通知のフォーマット、およびそれに添付されているペイロードに応じて、情報が Raw データとしてアプリケーションに届けられるか、アプリケーションのタイルが視覚的に更新されるか、またはトースト通知が表示されます。プッシュ通知が送信されると、Microsoft Push Notification Service は Web サービスに応答コードを送信して、通知を受け取ったこと、および通知がこの後の実行可能な機会にデバイスに届けられることを示します。しかし、Microsoft Push Notification Service には、プッシュ通知が Web サービスからデバイスに届けられたことをエンドツーエンドで確認する手段はありません。

AP_Push_NotificationArch

以下のメモは、プッシュ通知を正しく実装するために必要な情報です。

重要な注重要な注:

ユーザーの通知を Microsoft Push Notification Service に送信するように認証済み Web サービスを設定することをお勧めします。このようにすると、HTTPS インターフェイス経由で通信が行われるので、セキュリティが向上します。認証済み Web サービスには、1 日に送信できるプッシュ通知の数に対する制限はありません。一方、認証されていない Web サービスでは、1 サブスクリプションでの 1 日のプッシュ通知の数が 500 に制限されます。詳細については、「Windows Phone のプッシュ通知を送信するように認証済み Web サービスを設定する」を参照してください。

  • プッシュ通知チャンネルは、1 つのアプリケーションにつき 1 つまでに制限されています。この 1 つのチャネルを、そのアプリケーションのすべての種類の通知に使用できます。アプリケーションがこの制限を超えると、InvalidOperationException(PushNotificationChannelQuotaExceeded) 例外がスローされます。詳細については、「Windows Phone のプッシュ通知の受信」を参照してください。

  • プッシュ通知チャンネルは、1 つのデバイスにつき 30 までという制限もあります。アプリケーションがプッシュ通知チャンネルを登録しようとしたときに、既にデバイスあたり 30 のプッシュ通知チャンネルに到達していた場合は、InvalidOperationException(PushNotificationChannelQuotaExceeded) 例外がスローされます。詳細については、「Windows Phone のプッシュ通知の受信」を参照してください。

  • アプリケーション内でプッシュ通知チャンネルをトースト通知にバインドする場合は、「特定のアプリケーションの種類についての追加の要件の「プッシュ通知アプリケーション」セクション、および「アプリケーション ポリシー」のセクション 2.9 に示されている要件に従う必要があります。

  • プッシュ通知には、個人を識別できる情報を含めてはいけません。

  • プッシュ通知を使用するアプリケーションを開発する上での課題の 1 つとして、エミュレーターは現実の条件どおりではなく、常に信頼性のある接続が得られてしまうということがあります。エミュレーターでは安定して動作する通知も、実際のデバイスでは接続の強度が不安定だったり、ネットワーク接続業者の設定が適合していないなどの理由から、安定して動作しないことがあります。接続に信頼性が得られない場合の開発者の対処としては、正常な状態を達成できるまで通知の数を減らすことが考えられます。開発者は、必要に応じて複数のデバイス間および携帯電話会社間でアプリケーションをテストしてください。現実の接続状態を考慮し、厳しい想定でプログラミングすることにより、問題を起こすことなくアプリケーションの機能を低下させることができます。

  • 通知の最大サイズは、ヘッダーが 1 KB、ペイロードが 3 KB です。この制限を超えた分の通知は無視され、ステータス WebExceptionStatus.ProtocolErrorWebException が発生します。

  • プッシュ クライアントは、SOCKS プロキシの背後では動作できません。SOCKS プロキシを必要とするネットワークにデバイスが移動すると、プッシュ サービスは使用できなくなります。エミュレーターでテストする際には、SOCKS プロキシを構成する必要があります。詳細については、「Windows Phone エミュレーターのプロキシ サポート」を参照してください。

Web サービスが情報をアプリケーションに送信する際、使用できるプッシュ通知には、トースト、タイル、Raw 通知の 3 つの種類があります。

トースト通知

トースト通知は、ニュースや気象警報などのできごとをユーザーに知らせるために、画面の最上部に表示されます。トーストは、ユーザーが右にフリックして消去しない限り、約 10 秒間表示されます。ユーザーがトーストをタップすると、トースト通知を送信したアプリケーションが起動します。

トースト通知の要素は、次のとおりです。

  • Title。太字の文字で、アプリケーション アイコンに続けて表示されます。これは、XML スキーマで Text1 プロパティと定義されます。

  • Content。太字でない文字で、タイトルに続けて表示されます。これは、XML スキーマで Text2 プロパティと定義されます。

  • パラメーター。パラメーター値。表示されませんが、ユーザーがトーストをタップするとアプリケーションに渡されます。このパラメーターによって、アプリケーションが起動するときのページを指定できます。また、名前と値のペアをアプリケーションに渡すこともできます。これは、XML スキーマで Param プロパティと定義されます。

AP_Toast_ToastElements
重要な注重要な注:

Parameter プロパティを設定するトースト通知は、Windows Phone OS 7.1 以降が稼働するデバイスに対してのみ送信できます。Parameter プロパティが設定された通知を Windows Phone OS 7.0 デバイスに送信すると、PushErrorTypePayloadFormatInvalid エラーが発生し、チャネルは閉じられます。

表示できるテキストの量は、トースト メッセージに使用される文字と、Title (太字) および Content (太字でない) の長さによって決まります。タイトルだけを設定する場合、切り詰めなしで表示できるのは約 40 文字です。Content だけを設定する場合は、約 47 文字を表示できます。トーストを TitleContent に均等に配分すると、約 41 文字を表示できます。トーストに収まらないテキストは、切り詰められます。

Windows Phone には、小さいアプリケーション アイコンが Title および Content の左側に表示されます。アプリケーションに関連付けるアイコンは定義できますが、トースト通知の際に別のアイコンを渡すことはできません。

タイル通知

タイル通知を使用すると、スタート画面のタイルを更新することができます。タイルのプロパティとそれらの更新方法については、「Windows Phone のタイルの概要」を参照してください。タイルの前面にあるこれらのプロパティは、タイル通知を使用して更新することができます。

AP_Tiles_TileComponentsFront
  • Title。アプリケーションのタイトルを示す文字列。Title は 1 行のテキストに収める必要があり、実際のタイルより大きくならないようにする必要があります。約 15 文字まで、切り詰められずにタイトルに収まります。

  • BackgroundImage。タイルの前面に表示されるイメージ。タイルの前面に常に背景イメージを使用することをお勧めします。

  • Count (Badge とも呼ばれる)。1 ~ 99 の整数値。Count の値が設定されていない場合、または 0 に設定されている場合、タイルに円のイメージと値が表示されません。

タイルの背後にあるこれらのプロパティは、タイル通知を使用して更新することができます。

AP_Tiles_TileComponentsBack
  • BackTitle。タイルの背面の下部に表示される文字列。BackTitle は 1 行のテキストに収める必要があり、実際のタイルより大きくならないようにする必要があります。約 15 文字まで、切り詰められずにタイトルに収まります。

  • BackBackgroundImage。タイルの背面に表示されるイメージ。

  • BackContent。タイルの背面の本文に表示される文字列。切り詰めなしで約 40 文字をタイルに設定することができます。

重要な注重要な注:

BackTitleBackBackgroundImage、または BackContent プロパティを設定するタイル通知、またはペイロードでタイルの ID を設定することでセカンダリ タイルを指定する通知は、Windows Phone OS 7.1 以降が稼働するデバイスに対してのみ送信できます。これらの値が設定された通知を Windows Phone OS 7.0 デバイスに送信すると、PushErrorTypePayloadFormatInvalid エラーが発生し、チャネルは閉じられます。

以下に、BackgroundImage および BackBackgroundImage プロパティで使用されるイメージに関する追加的な事項を示します。

  1. タイル イメージには .jpg または .png ファイルを指定できます。

  2. ネットワークの変動性およびパフォーマンス上の理由から、タイル イメージにはローカル リソースの使用を検討してください。

  3. 透明部分のある .png をイメージに使用すると、ユーザーのテーマ カラーが透けて表示されます。

  4. タイルは 173 x 173 ピクセルです。指定したイメージの大きさが異なる場合は、173 x 173 になるように調整されます。

  5. イメージには、ローカルまたはリモートのリソースを使用できます。ローカルのリソースを使用する場合、リソースは XAP パッケージの一部としてインストールされている必要があります。

  6. ユーザーがタイル通知を無効にした場合は、タイルの内容を一般的な情報にする必要があります。以前の天気予報や交通情報など、古いデータが含まれていてはいけません。

  7. https はリモート イメージではサポートされていません。

  8. リモートのイメージは、80 KB までに制限されます。80 KB を超えるとダウンロードされません。

  9. リモート イメージは 30 秒以内にダウンロードされる必要があり、そうしないとダウンロードされません。

  10. 何らかの理由で BackgroundImage または BackBackgroundImage イメージを読み込めない場合は、更新時に設定された他のプロパティも一切変更されません。

Raw 通知

Raw 通知を使用すると、アプリケーションに情報を送ることができます。現在アプリケーションが実行されていないと、Raw 通知は Microsoft Push Notification Service で無視され、デバイスに届けられることはありません。

表示: