次の方法で共有


プッシュ通知機能の移行

このトピックには、プッシュ通知機能領域の移行ガイダンスが含まれています。

重要

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

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 アプリID GUID と Azure tenantID が必要です (AAD アプリの登録からAzure アプリID とテナント ID を受け取ります)。 UWP アプリで使用するパッケージ ファミリ名 (PFN) の代わりに、ID に Azure アプリID を使用します。 要求で再試行可能なエラーが発生した場合、通知プラットフォームは複数回の再試行します。

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" }

参照