次の方法で共有


プッシュ通知機能の移行

このトピックでは、プッシュ通知機能領域の移行ガイダンスについて説明します。

重要

現在サポートされているのは、未加工のプッシュ通知とアプリプッシュ通知のみです。 バッジプッシュ通知とタイルプッシュ通知はサポートされていません。

API と機能の違いの概要

プッシュ通知は、4 つの異なるステージに分けることができます。

段階 UWP Windows App SDK
ID パートナー センター (MSA) Azure アプリの登録 (AAD)
チャネル要求 非同期 非同期
Azure アプリの登録 ID
組み込まれている再試行ロジック (最大 5 回の再試行)
アクティベーション インプロセス, PushTrigger*, COM ライセンス認証* インプロセス、COM アクティブ化、ShellExecute
プッシュ通知を送信する login.live.com エンドポイントを使用してアクセス トークンを受信します トークン要求に https://login.microsoftonline.com/{tenantID}/oauth2/token エンドポイントを使用します

* Windows 10 バージョン 2004 (10.0; ビルド 19041) 以降でサポートされています。

ID の設定

Windows App SDK では、プッシュ通知機能で Azure アプリ登録 (AAD) の ID が使用されます。これにより、プッシュ通知を使用するために、パートナー センターからパッケージ ファミリ名 (PFN) を持つ必要がなくなります。

チャネル要求

チャネル要求は非同期的に処理され、Azure AppID GUID と Azure tenantID が必要です (AAD アプリの登録から Azure AppID とテナント ID を受け取ります)。 UWP アプリで使用するパッケージ ファミリ名 (PFN) の代わりに、ID に Azure AppID を使用します。 要求で再試行可能なエラーが発生した場合、通知プラットフォームは複数回の再試行します。

Windows App SDK アプリは、チャネル要求の状態を確認できます。

アクティベーション

プッシュ通知を受信するようにアプリを構成する」のWindows アプリ SDK登録とアクティブ化の手順を参照してください。

プッシュ通知を送信する

Windows App SDK アプリは、MSA エンドポイントからではなく、AAD エンドポイントからアクセス トークンを要求する必要があります。

アクセス トークン要求

UWP アプリの場合:

POST /accesstoken.srf HTTP/1.1
Host: login.live.com
Content-Type: application/x-www-form-urlencoded
Cookie: MSCC=73.140.231.96-US
Content-Length: 112

grant_type=client_credentials&client_id=<AppID_Here>&client_secret=<Client_Secret_Here>&scope=notify.windows.com

Windows App SDK アプリの場合 (AAD アクセス トークン要求):

POST /{tenantID}/oauth2/v2.0/token Http/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 160

grant_type=client_credentials&client_id=<Azure_App_Registration_AppId_Here>&client_secret=<Azure_App_Registration_Secret_Here>&resource=https://wns.windows.com/

WNS への HTTP POST

HTTP POST 要求を WNS に送信する場合、UWP からの変更はありません。 アクセス トークンは、引き続き承認ヘッダーで渡されます。

POST /?token=[ChannelURI] HTTP/1.1
Host: dm3p.notify.windows.com
Content-Type: application/octet-stream
X-WNS-Type: wns/raw
Authorization: Bearer [your access token]
Content-Length: 46

{ Sync: "Hello from the Contoso App Service" }