定期的な通知の概要Periodic notification overview

定期的な通知 (ポーリング通知とも呼ばれます) では、クラウド サービスから直接コンテンツをダウンロードして、一定の間隔でタイルやバッジを更新します。Periodic notifications, which are also called polled notifications, update tiles and badges at a fixed interval by downloading content from a cloud service. 定期的な通知を使うには、クライアント アプリのコードで 2 つの情報を指定する必要があります。To use periodic notifications, your client app code needs to provide two pieces of information:

  • アプリのタイルやバッジの更新がないかどうかを調べるために Windows でポーリングする Web 上の場所の Uniform Resource Identifier (URI)The Uniform Resource Identifier (URI) of a web location for Windows to poll for tile or badge updates for your app
  • URI をポーリングする頻度How often that URI should be polled

定期的な通知では、最小限のクラウド サービスとクライアントの投資で、ライブ タイルを更新することができます。Periodic notifications enable your app to get live tile updates with minimal cloud service and client investment. 定期的な通知は、同じコンテンツを多数のユーザーに配信する優れた方法です。Periodic notifications are a good delivery method for distributing the same content to a wide audience.

メモ   詳細については、Windows 8.1 のプッシュ通知と定期的な通知のサンプルをダウンロードし、Windows 10 アプリでソースコードを再利用する方法に関するページを参照してください。Note   You can learn more by downloading the Push and periodic notifications sample for Windows 8.1 and re-using its source code in your Windows 10 app.

 

しくみHow it works

定期的な通知では、アプリでクラウド サービスをホストする必要があります。Periodic notifications require that your app hosts a cloud service. このサービスは、アプリをインストールしているすべてのユーザーによって定期的にポーリングされます。The service will be polled periodically by all users who have the app installed. Windows では、ポーリング間隔 (1 時間に 1 回など) に従って URI に HTTP GET 要求を送り、この要求に対する応答として提供される要求したタイルまたはバッジのコンテンツ (XML 形式) をダウンロードして、アプリのタイルにそのコンテンツを表示します。At each polling interval, such as once an hour, Windows sends an HTTP GET request to the URI, downloads the requested tile or badge content (as XML) that is supplied in response to the request, and displays the content on the app's tile.

定期的な更新をトースト通知で使うことはできません。Note that periodic updates cannot be used with toast notifications. トーストの配信には、スケジュールされた通知またはプッシュ通知が適しています。Toast is best delivered through scheduled or push notifications.

URI の場所と XML コンテンツURI location and XML content

ポーリングする URI には、HTTP や HTTPS の有効な Web アドレスを使うことができます。Any valid HTTP or HTTPS web address can be used as the URI to be polled.

クラウド サーバーからの応答には、ダウンロードされたコンテンツが含まれます。The cloud server's response includes the downloaded content. URI から返されるコンテンツは、タイルまたはバッジの XML スキーマの仕様に準拠し、UTF-8 の形式でエンコードされている必要があります。The content returned from the URI must conform to the Tile or Badge XML schema specification, and must be UTF-8 encoded. 仕様で規定されている HTTP ヘッダーを使うと、通知の有効期限やタグを指定することができます。You can use defined HTTP headers to specify the expiration time or tag for the notification.

ポーリングの動作Polling Behavior

ポーリングを開始するには次のメソッドのいずれかを呼び出します。Call one of these methods to begin polling:

これらのいずれかのメソッドを呼び出すと、URI がすぐにポーリングされて、受け取ったコンテンツでタイルやバッジが更新されます。When you call one of these methods, the URI is immediately polled and the tile or badge is updated with the received contents. この最初のポーリングの後は、要求した間隔で更新が提供されます。After this initial poll, Windows continues to provide updates at the requested interval. ポーリングは、明示的に停止するか (TileUpdater.StopPeriodicUpdate を使用)、アプリをアンインストールするか、(セカンダリ タイルの場合は) タイルを削除するまで続けられます。Polling continues until you explicitly stop it (with TileUpdater.StopPeriodicUpdate), your app is uninstalled, or, in the case of a secondary tile, the tile is removed. それまでの間は、アプリが起動されなくても、タイルやバッジの更新がないかどうかを調べるために継続的にポーリングが行われます。Otherwise, Windows continues to poll for updates to your tile or badge even if your app is never launched again.

繰り返し間隔The recurrence interval

繰り返し間隔は、上記のメソッドのパラメーターとして指定します。You specify the recurrence interval as a parameter of the methods listed above. Windows は要求された間隔でポーリングを適切に実行しますが、多少の誤差が生じる場合もあります。Note that while Windows makes a best effort to poll as requested, the interval is not precise. Windows の判断により、要求したポーリング間隔よりも最大で 15 分ほど遅れる可能性があります。The requested poll interval can be delayed by up to 15 minutes at the discretion of Windows.

開始時刻The start time

必要に応じて、ポーリングを開始する時刻を指定できます。You optionally can specify a particular time of day to begin polling. タイルのコンテンツが 1 日に 1 回しか変更されないようなアプリでは、Consider an app that changes its tile content just once a day. ポーリングの開始時刻をクラウド サービスの更新時刻の直後に設定することをお勧めします。In such a case, we recommend that you poll close to the time that you update your cloud service. たとえば、毎朝 8 時にその日のサービス品が公開されるショッピング サイトであれば、午前 8 時すぎにポーリングを行ってタイルの新しいコンテンツがないかどうかを調べます。For example, if a daily shopping site publishes the day's offers at 8 AM, poll for new tile content shortly after 8 AM.

開始時刻を指定した場合、メソッドを最初に呼び出したときに、すぐにポーリングが行われコンテンツが確認されます。If you provide a start time, the first call to the method polls for content immediately. それ以降の定期的なポーリングは、指定した開始時刻の 15 分以内に開始されます。Then, regular polling starts within 15 minutes of the provided start time.

自動再試行の動作Automatic retry behavior

URI がポーリングされるのは、デバイスがオンラインになっている場合だけです。The URI is polled only if the device is online. ネットワークが利用可能でも、任意の理由で URI にアクセスできない場合は、ポーリング間隔の反復が 1 回スキップされ、次の間隔で再び URI がポーリングされます。If the network is available but the URI cannot be contacted for any reason, this iteration of the polling interval is skipped, and the URI will be polled again at the next interval. ポーリング間隔に達したときにデバイスがオフ、スリープ、または休止状態になっていた場合、URI は、デバイスがオフ状態やスリープ状態から回復したときにポーリングされます。If the device is in an off, sleep, or hibernated state when a polling interval is reached, the URI is polled when the device returns from its off or sleep state.

アプリの更新プログラムの処理Handling app updates

ポーリング URI を変更するアプリの更新プログラムをリリースする場合は、タイルが必ず新しい URI を使用するように、新しい URI と共に StartPeriodicUpdate を呼び出す、毎日の時刻のトリガーによるバックグラウンド タスクを追加する必要があります。If you release an app update that changes your polling URI, you should add a daily time trigger background task which calls StartPeriodicUpdate with the new URI to ensure your tiles are using the new URI. そうしないと、ユーザーがアプリの更新プログラムを受け取ってもアプリを起動しない場合、ユーザーのタイルは古い URI を使い続けるため、URI が無効になった場合や返されたペイロードが存在しないローカル画像を参照している場合に、表示に失敗することがあります。Otherwise, if users receive your app update but don't launch your app, their tiles will still be using the old URI, which may fail to display if the URI is now invalid or if the returned payload references local images that no longer exist.

タイル通知とバッジ通知の有効期限Expiration of tile and badge notifications

既定では、定期的なタイル通知とバッジ通知は、ダウンロードされたときから 3 日後に有効期限切れになります。By default, periodic tile and badge notifications expire three days from the time they are downloaded. 通知の有効期限が切れると、バッジ、タイル、キューからコンテンツが削除され、ユーザーに表示されなくなります。When a notification expires, the content is removed from the badge, tile, or queue and is no longer shown to the user. すべての定期的なタイル通知とバッジ通知には、アプリや通知に適した時間を使って有効期限を明示的に設定し、コンテンツの意味がなくなっても保持されないようにすることをお勧めします。It is a best practice to set an explicit expiration time on all periodic tile and badge notifications, using a time that makes sense for your app or notification, to ensure that the content does not persist longer than it is relevant. 明示的な有効期限は、コンテンツの存続期間が決まっている場合に重要です。An explicit expiration time is essential for content with a defined life span. また、クラウド サービスにアクセスできなくなった場合や、ユーザーがネットワークに長時間接続していない場合に、古いコンテンツが確実に削除されます。It also assures the removal of stale content if your cloud service becomes unreachable, or if the user disconnects from the network for an extended period of time.

クラウド サービスでは、応答のペイロードに X-WNS-Expires HTTP ヘッダーを含めることによって、通知の有効期限の日時が明示的に設定されます。Your cloud service sets an expiration date and time for a notification by including the X-WNS-Expires HTTP header in the response payload. X-WNS-Expires HTTP ヘッダーは、HTTP-date 形式に準拠します。The X-WNS-Expires HTTP header conforms to the HTTP-date format. 詳しくは、「StartPeriodicUpdate」または「StartPeriodicUpdateBatch」をご覧ください。For more information, see StartPeriodicUpdate or StartPeriodicUpdateBatch.

たとえば、株式市場の取引が活発な日は、株価の更新の有効期限をポーリング間隔の有効期限の 2 倍に設定することをお勧めします (ポーリング間隔が 30 分の場合は有効期限を受け取り後 1 時間にするなど)。For example, during a stock market's active trading day, you can set the expiration for a stock price update to twice that of your polling interval (such as one hour after receipt if you are polling every half-hour). また、ニュース アプリの場合、毎日のニュースを表示するタイルの更新の有効期限は 1 日が適しています。As another example, a news app might determine that one day is an appropriate expiration time for a daily news tile update.

通知キューでの定期的な通知Periodic notifications in the notification queue

定期的なタイルの更新は通知の循環と併用できます。You can use periodic tile updates with notification cycling. 既定では、スタート画面のタイルには、新しい通知によって置き換えられるまで、1 つの通知のコンテンツが表示されます。By default, a tile on the Start screen shows the content of a single notification until it is replaced by a new notification. 循環を有効にすると、最大で 5 つの通知がキューに入れられ、タイルに循環して表示されます。When you enable cycling, up to five notifications are maintained in a queue and the tile cycles through them.

キューの通知の数が限度の 5 個になると、次の新しい通知によってキューの最も古い通知が置き換えられます。If the queue has reached its capacity of five notifications, the next new notification replaces the oldest notification in the queue. ただし、通知にタグを設定することで、キューの置き換えポリシーを操作できます。However, by setting tags on your notifications, you can affect the queue's replacement policy. タグは大文字と小文字が区別されないアプリ固有の文字列 (最大 16 文字の英数字) で、応答のペイロードの X-WNS-Tag HTTP ヘッダーで指定されます。A tag is an app-specific, case-insensitive string of up to 16 alphanumeric characters, specified in the X-WNS-Tag HTTP header in the response payload. 着信した通知のタグは、既にキューにあるすべての通知のタグと比較され、Windows compares the tag of an incoming notification with the tags of all notifications already in the queue. 一致するものが見つかると、キューにある同じタグを持つ通知が新しい通知に置き換えられます。If a match is found, the new notification replaces the queued notification with the same tag. 一致するものが見つからない場合は、既定の置き換え規則が適用され、キューの最も古い通知が新しい通知に置き換えられます。If no match is found, the default replacement rule is applied and the new notification replaces the oldest notification in the queue.

通知のキューとタグを使うと、充実した通知シナリオを実装できます。You can use notification queuing and tagging to implement a variety of rich notification scenarios. たとえば、株価アプリでは、それぞれの銘柄名をタグに使って異なる 5 銘柄の通知を送ることができます。For example, a stock app could send five notifications, each about a different stock and each tagged with a stock name. このようにすると、同じ銘柄の複数の通知がキューに入れられて、有効期限が切れた古い通知が表示されるようなことがなくなります。This prevents the queue from ever containing two notifications for the same stock, the older of which is out of date.

詳細については、「 通知キューの使用」を参照してください。For more information, see Using the notification queue.

通知キューの有効化Enabling the notification queue

通知キューを実装するには、最初に、タイルに対してキューを有効にする必要があります (「ローカル通知で通知キューを使用する方法」を参照)。To implement a notification queue, first enable the queue for your tile (see How to use the notification queue with local notifications). キューを有効にする呼び出しはアプリの存続期間で 1 回だけ実行する必要がありますが、アプリが起動されるたびに呼び出しても問題はありません。The call to enable the queue needs to be done only once in your app's lifetime, but there is no harm in calling it each time your app is launched.

一度に複数の通知をポーリングするPolling for more than one notification at a time

Windows でダウンロードを行うタイルの通知ごとに、一意の URI を指定する必要があります。You must provide a unique URI for each notification that you'd like Windows to download for your tile. StartPeriodicUpdateBatch メソッドを使うと、通知キューで使う URI を一度に 5 つまで指定できます。By using the StartPeriodicUpdateBatch method, you can provide up to five URIs at once for use with the notification queue. 各 URI がポーリングされ、ほぼ同じ時間にそれぞれ 1 つの通知ペイロードが返されます。Each URI is polled for a single notification payload, at or near the same time. ポーリングされる各 URI からは、それぞれ固有の有効期限とタグ値を返すこともできます。Each polled URI can return its own expiration and tag value.