適切なプッシュ通知チャネルの種類の選択

この記事では、アプリにコンテンツを配信するのに役立つ 3 種類のWindowsプッシュ通知チャネル (プライマリ、セカンダリ、代替) について説明します。

(プッシュ通知を作成する方法の詳細については、Windows プッシュ通知サービス (WNS) の概要を参照してください)。

プッシュ チャネルの種類

Windows アプリに通知を送信するために使用できる 3 種類のプッシュ チャネルがあります。 これらは次のとおりです。

プライマリ チャネル - "従来の" プッシュ チャネル。 ストア内の任意のアプリでトースト、タイル、ロウ、またはバッジの通知を送信するのに使用できます。 こちらを参照してください。

セカンダリ タイル チャネル - セカンダリ タイルにタイルの更新をプッシュするために使用する。 ユーザーのスタート画面にピン留めされたセカンダリ タイルにタイルまたはバッジ通知を送信する場合にのみ使用できます

代替チャネル - サポートされなくなりました - Creators Update に追加された新しい種類のチャネル。 ストアに登録されていないものも含め、Windowsアプリに直接通知を送信できます。 ここでも、代替チャネルはサポートされなくなったことに注意してください。

Note

どのプッシュ チャネルを使用しても、アプリがデバイス上で実行されると、常にローカル トースト、タイル、バッジ通知を送信できます。 フォアグラウンド アプリ プロセスまたはバックグラウンド タスクからローカル通知を送信できます。

プライマリ チャネル

これらは現在、Windowsで最も一般的に使用されているチャネルであり、アプリがMicrosoft Store経由で配布されるほぼすべてのシナリオに適しています。 すべての種類の通知をアプリに送信できます。

プライマリ チャネルは何を有効にしますか?

  • タイルまたはバッジの更新をプライマリ タイルに送信する。 ユーザーがスタート画面にタイルをピン留めすることを選択した場合は、これが表示されるチャンスです。 アプリ内のエクスペリエンスに関する有用な情報やリマインダーを含む更新プログラムを送信します。
  • トースト通知の送信。 トースト通知は、ユーザーにすぐ情報を届けるための機会です。 ほとんどのアプリの上にシェルによって描画され、ユーザーが戻って後で操作できるように、アクション センターにライブ表示されます。
  • バックグラウンド タスクをトリガーするための未加工通知の送信。 通知に基づいてユーザーに代わって何らかの作業を行いたい場合があります。 未加工の通知を使用すると、アプリのバックグラウンド タスクを実行できます
  • TLS を使用してWindowsによって提供される転送中のメッセージ暗号化。 メッセージは、WNS に送信され、ユーザーのデバイスに送信されるネットワーク上で暗号化されます。

プライマリ チャネルの制限事項

  • WNS REST API を使用してプッシュ通知を送信する必要があります。これは、デバイス ベンダー間で標準ではありません。
  • アプリごとに作成できるチャネルは 1 つだけです
  • アプリをMicrosoft Storeに登録する必要があります

プライマリ チャネルの作成

PushNotificationChannel channel = 
	await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();

副タイルチャンネル

これらは、タイルとバッジの更新をセカンダリ タイルにプッシュするために使用できるチャネルです。 これらは、グループ チャットの新しいメッセージや更新されたスポーツ スコアなど、アプリで操作できる興味深いアクションや情報をユーザーに通知するためにアプリによって使用されます。

セカンダリ タイル チャンネルは何を可能にしますか?

  • タイルまたはバッジ通知をセカンダリ タイルに送信する。 セカンダリ タイルは、ユーザーをアプリに戻す優れた方法です。 彼らは、彼らが関心を持つ情報への深いつながりであり、タイルに関連情報を配置することで、何度も戻ってくるように促します。
  • さまざまなタイル間のチャネル (および有効期限) の分離。 これにより、ユーザーがスタート画面にピン留めする可能性があるさまざまな種類のセカンダリ タイル間で、バックエンドのロジックを分離できます。
  • TLS を使用してWindowsによって提供される転送中のメッセージ暗号化。 メッセージは、WNS に送信され、ユーザーのデバイスに送信されるネットワーク上で暗号化されます。

セカンダリータイルチャネルの制限事項

  • トーストまたは未加工の通知は許可されません。 "セカンダリ タイル"に送信されたトースト通知または未加工の通知は、システムによって無視されます。
  • アプリをMicrosoft Storeに登録する必要があります

セカンダリ タイル チャネルの作成

PushNotificationChannel channel = 
	await PushNotificationChannelManager.CreatePushNotificationChannelForSecondaryTileAsync(tileId);

代替チャネル

代替チャネルを使用すると、アプリは、Microsoft Storeに登録したり、アプリに使用されるプライマリ チャネルの外部にプッシュ チャネルを作成したりすることなく、プッシュ通知を送信できます。

Note

2021 年 7 月 1 日以降、Web プッシュ チャネルまたは代替チャネルを使用して WNS 経由でブラウザー ベースの通知を送信するアプリケーションは、Microsoft Storeにオンボードする必要があります。

代替チャネルは何を有効にしますか?

  • 任意のWindows デバイスで実行されているWindowsに生のプッシュ通知を送信します。 代替チャネルでは生の通知のみが許可されます (ただし、バックグラウンド タスクを起動して、トースト通知またはタイル通知をローカルに表示することもできます)。
  • アプリ内でさまざまな機能に対して複数の生プッシュ チャネルを作成できます。 アプリは最大 1,000 個の代替チャネルを作成でき、それぞれ 30 日間有効です。 これらの各チャネルは、アプリによって個別に管理または取り消すことができます。
  • 代替プッシュ チャネルは、アプリをMicrosoft Storeに登録せずに作成できます。 アプリをMicrosoft Storeに登録せずにデバイスにインストールする場合は、引き続きプッシュ通知を受信できます。
  • サーバーは、W3C 標準 REST API と VAPID プロトコルを使用して通知をプッシュできます。 代替チャネルは W3C 標準プロトコルを使用するため、保守が必要なサーバー ロジックを簡略化できます。
  • 完全なエンド ツー エンドのメッセージ暗号化。 プライマリ チャネルは転送中に暗号化を提供しますが、セキュリティを強化する必要がある場合は、代替チャネルを使用して、アプリが暗号化ヘッダーを通過してメッセージを保護できます。

代替チャネルの制限事項

  • アプリのサーバーでは、トースト、タイル、バッジといった種類のプッシュ通知を送信することはできません。 直接プッシュ通知のみを送信できます。 アプリは引き続きバックグラウンド タスクからローカル通知を送信できます。
  • プライマリ タイル チャネルまたはセカンダリ タイル チャネルとは異なる REST API が必要です。 標準の W3C REST API を使用すると、アプリでプッシュ トーストまたはタイルの更新を送信するための異なるロジックが必要になります

代替チャネルの作成

PushNotificationChannel webChannel = 
	await PushNotificationChannelManager.GetDefault().CreateRawPushNotificationChannelWithAlternateKeyForApplicationAsync(applicationServerKey, appChannelId);

チャネルの種類の比較

さまざまな種類のチャネルの簡単な比較を次に示します。

Type トーストをプッシュしますか? プッシュ タイル/バッジ 未加工の通知をプッシュしますか? Authentication API ストアの登録が必要ですか? Channels Encryption
Primary Yes はい - 主要タイルのみ Yes OAuth WNS REST API Yes アプリごとに 1 つ 転送中
セカンダリ タイル No はい - 二次タイルのみ No OAuth WNS REST API Yes セカンダリ タイルごとに 1 つ 転送中
Alternate No No Yes VAPID WebPush W3C標準 No アプリあたり 1,000 転送中 + ヘッダーパススルーでエンドツーエンドの暗号化が可能 (アプリ コードが必要)

適切なチャネルの選択

一般に、アプリでプライマリ チャネルを使用することをお勧めします。ただし、いくつかの例外があります。

  1. タイルの更新をセカンダリ タイルにプッシュする場合は、セカンダリ タイル プッシュ チャネルを使用します。
  2. チャネルを他のサービス (ブラウザーの場合など) に渡す場合は、代替チャネルを使用します。
  3. Windows ストアに表示されないアプリ (LOB アプリなど) を作成する場合は、代替チャネルを使用します。
  4. サーバー上に既存の Web プッシュ コードがある場合、またはバックエンド サービスで複数のチャネルを再利用する必要がある場合は、代替チャネルを使用します。