推送通知功能迁移
本主题包含推送通知功能区中的迁移指南。
重要
目前仅支持原始推送通知和应用推送通知。 不支持锁屏提醒推送通知和磁贴推送通知。
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)。
- 对于 UWP应用,你在 Windows Store 合作伙伴中心注册并注册应用程序。
- 对于 Windows 应用 SDK 应用,你创建一个 Azure 帐户,并创建一个 Azure 应用注册 (AAD)。
通道请求
通道请求异步处理,需要 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" }