推送通知功能迁移

本主题包含推送通知功能区中的迁移指南。

重要

目前仅支持原始推送通知和应用推送通知。 不支持锁屏提醒推送通知和磁贴推送通知。

API 和/或功能差异摘要

推送通知可以分为这四个独立的阶段。

阶段 UWP Windows 应用 SDK
标识 合作伙伴中心 (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)及更高版本。

标识设置

在 Windows 应用 SDK 中,推送通知功能使用来自 Azure应用注册 (AAD) 的标识,这样就无需为了使用推送通知而必须从合作伙伴中心获得包系列名称 (PFN)。

通道请求

通道请求异步处理,需要 Azure 应用ID GUID 和 Azure tenantID(从 AAD 应用注册收到 Azure 应用ID 和租户 ID)。 将 Azure 应用ID 用于标识,代替 UWP 应用使用的程序包系列名称(PFN)。 如果请求遇到可重试错误,通知平台将尝试多次重试。

Windows 应用 SDK 应用可以检查通道请求的状态。

激活

请参阅“配置应用以接收推送通知”中的Windows 应用 SDK注册和激活步骤。

发送推送通知

Windows 应用 SDK 应用必须从 AAD 终结点(而不是 MSA 终结点)请求访问令牌。

访问令牌请求

对于 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/

HTTP 发布到 WNS

向 WNS 发送 HTTP POST 请求方面,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" }

另请参阅