共用方式為


使用 Azure 通知中樞傳送跨平台通知

本教學課程是以上一個教學課程使用 Azure 通知中樞將通知傳送給特定使用者為基礎。 該教學課程將說明如何將通知推播至所有由特定經驗證使用者所註冊的裝置。 該方法需要用多個要求來傳送通知給每個支援的用戶端平台。 Azure 通知中心可支援範本,讓您指定特定裝置接收通知的方式。 此方法使得傳送跨平台通知變得更簡單。

本文示範如何運用範本傳送以所有平台為目標的通知。 本文使用單一要求來傳送平台中性通知。 如需這些範本的詳細資訊,請參閱通知中樞概觀

重要

Windows Phone 8.1 及更早版本的專案不支援 Visual Studio 2019。 如需詳細資訊,請參閱 Visual Studio 2019 平台目標及相容性 (部分機器翻譯)。

注意

透過通知中樞,裝置可使用相同標籤註冊多個範本。 在此情況下,當傳入的訊息符合該標籤時,就會有多個通知傳遞至裝置 (每個通知各用於一個範本)。 透過此流程,您就能讓相同訊息顯示在多個視覺通知中,例如以徽章形式和 Windows 市集應用程式中的快顯通知形式。

使用範本傳送跨平台通知

注意

Microsoft Push Notification Service (MPNS) 已被取代,不再支援。

本節使用您在使用 Azure 通知中樞將通知傳送給特定使用者 (部分機器翻譯) 教學課程中建置的範例程式碼。 您可以從 GitHub 下載完整範例 (英文)。

若要使用範本傳送跨平台通知,請執行下列動作:

  1. 在 Visual Studio 的 [方案總管] 中展開 [控制器] 資料夾,然後開啟 RegisterController.cs 檔案。

  2. Put 方法中找出建立新註冊的程式碼區塊,並將 switch 內容取代為下列程式碼:

    switch (deviceUpdate.Platform)
    {
        case "mpns":
            var toastTemplate = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                "<wp:Notification xmlns:wp=\"WPNotification\">" +
                    "<wp:Toast>" +
                        "<wp:Text1>$(message)</wp:Text1>" +
                    "</wp:Toast> " +
                "</wp:Notification>";
            registration = new MpnsTemplateRegistrationDescription(deviceUpdate.Handle, toastTemplate);
            break;
        case "wns":
            toastTemplate = @"<toast><visual><binding template=""ToastText01""><text id=""1"">$(message)</text></binding></visual></toast>";
            registration = new WindowsTemplateRegistrationDescription(deviceUpdate.Handle, toastTemplate);
            break;
        case "apns":
            var alertTemplate = "{\"aps\":{\"alert\":\"$(message)\"}}";
            registration = new AppleTemplateRegistrationDescription(deviceUpdate.Handle, alertTemplate);
            break;
        case "fcm":
            var messageTemplate = "{\"data\":{\"message\":\"$(message)\"}}";
            registration = new FcmTemplateRegistrationDescription(deviceUpdate.Handle, messageTemplate);
            break;
        default:
            throw new HttpResponseException(HttpStatusCode.BadRequest);
    }
    

    這段程式碼會呼叫平台特有方法來建立範本註冊,而非原生註冊。 因為範本註冊源自原生註冊,因此不需要修改現有註冊。

  3. 在 [方案總管] 的 [控制器] 資料夾中,開啟 NotificationsController.cs 檔案。 以下列程式碼取代 Post 方法:

    public async Task<HttpResponseMessage> Post()
    {
        var user = HttpContext.Current.User.Identity.Name;
        var userTag = "username:" + user;
    
        var notification = new Dictionary<string, string> { { "message", "Hello, " + user } };
        await Notifications.Instance.Hub.SendTemplateNotificationAsync(notification, userTag);
    
        return Request.CreateResponse(HttpStatusCode.OK);
    }
    

    此程式碼會在同一時間傳送通知給所有平台。 您未指定原生承載。 通知中樞將以所提供的 tag 值 (指定於註冊的範本中) 建置並傳遞正確的裝載到每個裝置。

  4. 重新發佈 Web API 專案。

  5. 重新執行用戶端應用程式,以驗證註冊已成功。

  6. 可選擇將此用戶端應用程式部署到第二個裝置,然後執行此應用程式。 每個裝置上都會顯示通知。

下一步

您已完成本教學課程,請參閱下列文章進一步了解通知中樞和範本: