推送通知功能移轉
本主題包含應用程式推送功能區域中的移轉指引。
重要
目前僅支援原始推播通知和應用程式推播通知。 不支援徽章推播通知和平鋪推播通知。
API 和/或功能差異摘要
推播通知可以分成這四個不同的階段。
階段 | UWP | Windows 應用程式 SDK |
---|---|---|
身分識別 | 合作夥伴中心 (MSA) | Azure App 註冊 (AAD) |
通道要求 | 非同步 | 非同步 Azure 應用程式註冊識別碼 內建的重試邏輯 (最多 5 次重試) |
啟用 | In-process、PushTrigger*、COM activation* | In-process、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 市集合作夥伴中心註冊並註冊應用程式。
- 對於 Windows 應用程式 SDK 應用程式,您建立一個 Azure 帳戶,並建立一個 Azure 應用程式註冊 (AAD)。
通道要求
通道要求會以異步方式處理,而且需要 Azure AppID GUID 和 Azure tenantID (您會收到來自 AAD 應用程式註冊的 Azure AppID 和租使用者識別瑪)。 您可以使用 Azure AppID 作為身分識別,以取代 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 應用程式 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
在將 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" }