アプリ通知のカスタム タイムスタンプ

既定では、通知センター内に表示されるアプリ通知のタイムスタンプは、通知が送信された時刻に設定されます。 必要に応じて、タイムスタンプを独自のカスタム日時でオーバーライドして、通知が送信された時刻ではなく、メッセージ/情報/コンテンツが実際に作成された時刻を表すことができます。 これにより、通知センター内で通知が正しい順序で表示され、時間順に並べ替えられます。 ほとんどのアプリでは、カスタム タイムスタンプを指定することをお勧めします。

この機能は Windows Build 15063 以降で使用できます。

App notification with custom timestamp

Note

"トースト通知" という用語は、"アプリ通知" に置き換えられます。 これらの用語はどちらも Windows の同じ機能を指していますが、時間の経過と共に、ドキュメントでの "トースト通知" の使用を段階的に廃止します。

カスタム タイムスタンプを使用するには、アプリ通知 XML ペイロードのトースト要素displayTimestamp プロパティを割り当てるだけです。 Windows アプリ SDK 1.2 以降では、Microsoft.Windows.AppNotifications.Builder を使用してカスタム タイムスタンプをアプリ通知に追加できます。 UWP アプリの場合は、バージョン 1.4.0 以降の UWP Community Toolkit Notifications NuGet ライブラリを使用できます。 未加工の XML を使用してタイムスタンプを指定することもできます。

var builder = new AppNotificationBuilder()
    .AddText("Matt sent you a friend request")
    .AddText("Hey, wanna dress up as wizards and ride around on hoverboards?")
    .SetTimeStamp(new DateTime(2017, 04, 15, 19, 45, 00, DateTimeKind.Utc));

XML を使用している場合、日付は ISO 8601 で書式設定する必要があります。

Note

秒には小数点以下 3 桁までしか使用できません (ただし、現実的には、それほど詳細なものを提供する意味はありません)。 さらに入力すると、ペイロードは無効になり、"新しい通知" の通知が届きます。

使い方のガイダンス

一般に、ほとんどのアプリではカスタム タイムスタンプを指定することをお勧めします。 これにより、ネットワークの遅延、機内モード、または定期的なバックグラウンド タスクの固定間隔に関係なく、通知のタイムスタンプがメッセージ/情報/コンテンツが生成された日時を正確に表すことができます。

たとえば、ニュース アプリでは、新しい記事をチェックして通知を表示するバックグラウンド タスクを 15 分ごとに実行できます。 カスタム タイムスタンプより前のタイムスタンプは、アプリ通知が生成された日時に対応していました (したがって、常に 15 分間隔)。 ただし、これで、アプリはタイムスタンプを記事が実際に公開された時刻に設定できます。 同様に、電子メール アプリとソーシャル ネットワーク アプリは、通知に同様のパターンの定期的なプルが使用されている場合に、この機能の恩恵を受けることができます。

さらに、カスタム タイムスタンプを指定すると、ユーザーがインターネットから切断された場合でも、タイムスタンプが正しいことを確認できます。 たとえば、ユーザーがコンピューターの電源を入れ、バックグラウンド タスクを実行すると、最終的に通知のタイムスタンプが、ユーザーがコンピューターをオンにした時刻ではなく、メッセージが送信された時刻を表すことができます。

既定のタイムスタンプ

カスタム タイムスタンプを指定しない場合は、通知が送信された時刻が使用されます。

WNS 経由でプッシュ通知を送信した場合、通知が WNS サーバーによって受信された時刻が使用されます (そのため、デバイスへの通知の配信に関する待機時間はタイムスタンプに影響しません)。

ローカル通知を送信した場合、通知プラットフォームが通知を受け取った時刻が使用されます (すぐに送信されます)。