教學課程:使用 Azure 通知中樞將通知傳送至 通用 Windows 平台 應用程式

在本教學課程中,您會建立通知中樞,將推播通知傳送至 通用 Windows 平台 (UWP) 應用程式。 您可以建立空白的 Windows 市集應用程式,以使用 Windows 推播通知服務 (WNS) 接收推播通知。 然後,您可以使用通知中樞,將推播通知廣播到執行您應用程式的所有裝置。

注意

您可以在 GitHub找到本教學課程的完整程式代碼。

您可以採取下列步驟:

  • 在 Windows 市集中建立應用程式
  • 建立通知中樞
  • 建立範例 Windows 應用程式
  • 傳送測試通知

必要條件

  • Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,請在開始前建立免費 Azure 帳戶
  • Microsoft Visual Studio 2017 或更新版本。 本教學課程中的範例使用 Visual Studio 2019
  • 已安裝 UWP 應用程式開發工具
  • 作用中的 Windows 市集帳戶
  • 確認 已啟用 [從應用程式和其他寄件者 取得通知] 設定。
    • 在電腦上啟動 設定 視窗。
    • 選取 [ 系統 ] 圖格。
    • 從左側功能表中選取 [ 通知和動作 ]。
    • 確認 已啟用 [從應用程式和其他寄件者 取得通知] 設定。 如果未啟用,請加以啟用。

完成本教學課程是 UWP 應用程式所有其他通知中樞教學課程的必要條件。

在 Windows 市集中建立應用程式

注意

Microsoft 推播通知服務 (MPNS) 已被取代且不再受到支援。

若要將推播通知傳送至 UWP 應用程式,請將您的應用程式與 Windows 市集產生關聯。 然後,將您的通知中樞設定為與 WNS 整合。

  1. 流覽至 Windows 開發人員中心,使用您的 Microsoft 帳戶登入,然後選取 [建立新的應用程式]。

    New app button

  2. 輸入應用程式的名稱,然後選取 [ 保留產品名稱]。 這麼做會為您的應用程式建立新的 Windows 市集註冊。

    Store app name

  3. 展開 [產品管理],然後選取 [產品識別]。 記下 套件 SIDPackage/Identity/NamePackage/Identity/PublisherPackage/Properties/PublisherDisplayName 值。

    Partner center apps

  4. 在 [產品管理] 下,選取 [WNS/MPNS],然後選取 [應用程式註冊入口網站]。 登入您的 Microsoft 帳戶。 應用程式註冊頁面會在新的索引標籤中開啟。

    WNS page

  5. 在 [基本資訊] 底下,選取 [用戶端認證:新增憑證或密碼]。

    Notification Hub settings on Azure portal

  6. 在 [憑證與秘密] 頁面上的 [客戶端密碼] 底下,選取 [新增客戶端密碼]。 建立客戶端密碼(也稱為應用程式密碼)之後,請先記下它,再離開頁面。

    警告

    您只能在建立客戶端密碼之後立即檢視用戶端密碼 (應用程式秘密) 值。 離開頁面之前,請務必儲存秘密。

    Client secret on portal

    警告

    應用程式秘密和套件 SID 是重要的安全性認證。 請勿與任何人共用這些值,或與您的應用程式一起散發這些值。

建立通知中樞

  1. 登入 Azure 入口網站

  2. 選取 左側功能表上的 [所有服務 ]。 A screenshot showing select All Services for an existing namespace.

  3. 在 [篩選服務] 文本框中輸入通知中樞 選取服務名稱旁的星號圖示,將服務新增至左側功能表上的 [我的最愛] 區段。 選取 [ 通知中樞]。

    A screenshot showing how to filter for notification hubs.

  4. 在 [通知中 樞] 頁面上,選取 工具欄上的 [建立 ]。

    A screenshot showing how to create a new notification hub.

  5. 在 [通知中樞] 頁面上的 [基本] 索引標籤中,執行下列步驟:

    1. [訂用帳戶] 中,選取您想要使用的 Azure 訂用帳戶名稱,然後選取現有的資源群組,或建立新的資源群組。

    2. 在命名空間詳細數據中輸入新命名空間的唯一名稱。

    3. 命名空間包含一或多個通知中樞,因此請在通知中樞詳細數據中輸入中樞的名稱。

    4. 從 [ 位置 ] 下拉式清單框中選取值。 這個值會指定您要在其中建立中樞的位置。

      Screenshot showing notification hub details.

    5. 檢閱 [可用性區域] 選項。 如果您選擇具有可用性區域的區域,預設會選取複選框。 可用性區域 是付費功能,因此會將額外的費用新增至您的階層。

    6. 選擇災害復原選項:配對的復原區域彈性復原區域。 如果您選擇 [配對復原區域],則會顯示故障轉移區域。 如果您選取 [ 彈性復原區域],請使用下拉式清單從復原區域清單中選擇。

      Screenshot showing availability zone details.

    7. 選取 建立

  6. 部署完成時,請選取 [移至資源]。

設定中樞的 WNS 設定

  1. 在 [通知設定] 類別中,選取 [Windows][WNS]。

  2. 輸入您從上一節注意到的 套件 SID 值(例如:ms-app://<Your Package SID>“) 和安全性 金鑰應用程式密碼)。

  3. 按兩下工具列上的 [ 儲存 ]。

    The Package SID and Security Key boxes

您的通知中樞現在已設定為使用 WNS。 您有 連接字串 來註冊您的應用程式並傳送通知。

建立範例 Windows 應用程式

  1. 在 Visual Studio 中,開啟 [ 檔案 ] 功能表,選取 [新增],然後選取 [ 專案]。

  2. 在 [ 建立新專案 ] 對話框中,完成下列步驟:

    1. 在頂端的搜尋方塊中,輸入 Windows Universal

    2. 在搜尋結果中,選取 [空白應用程式][通用 Windows],然後選取 [ 下一步]。

      New Project dialog

    3. 在 [設定新專案] 對話框中,輸入專案名稱,以及項目檔的位置。

    4. 選取 建立

  3. 接受目標和最低平臺版本的預設值,然後選取 [確定]。

  4. 在 方案總管 中,以滑鼠右鍵按兩下 Windows 市集應用程式專案,選取 [發佈],然後選取 [建立應用程式與市集的關聯]。 [ 將您的應用程式與 Windows 市集 精靈建立關聯] 隨即出現。

  5. 在精靈中,使用您的 Microsoft 帳戶登入。

  6. 選取您在步驟 2 中註冊的應用程式,選取 [下一步],然後選取 [ 關聯]。 這麼做會將必要的 Windows 市集註冊資訊新增至應用程式指令清單。

  7. 在 Visual Studio 中,以滑鼠右鍵按兩下方案,然後選取 [ 管理 NuGet 套件]。 [ 管理 NuGet 套件 ] 視窗隨即開啟。

  8. 在搜尋方塊中,輸入 WindowsAzure.Messaging.Managed、選取 [ 安裝],然後接受使用規定。

    The Manage NuGet Packages window

    此動作會使用 Microsoft.Azure.NotificationHubs NuGet 套件下載、安裝及新增適用於 Windows 的 Azure 通知中樞連結庫參考。

  9. App.xaml.cs開啟項目檔,並新增下列語句:

    using Windows.Networking.PushNotifications;
    using Microsoft.WindowsAzure.Messaging;
    using Windows.UI.Popups;
    
  10. 在專案的 App.xaml.cs 檔案中,找出 App 類別,然後新增下列 InitNotificationsAsync 方法定義。 將 取代<your hub name>為您在 Azure 入口網站 中建立的通知中樞名稱,並將 取代<Your DefaultListenSharedAccessSignature connection string>DefaultListenSharedAccessSignature 為您通知中樞的 [存取原則] 頁面的 [連接字串:

    private async void InitNotificationsAsync()
    {
        var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
    
        var hub = new NotificationHub("<your hub name>", "<Your DefaultListenSharedAccessSignature connection string>");
        var result = await hub.RegisterNativeAsync(channel.Uri);
    
        // Displays the registration ID so you know it was successful
        if (result.RegistrationId != null)
        {
            var dialog = new MessageDialog("Registration successful: " + result.RegistrationId);
            dialog.Commands.Add(new UICommand("OK"));
            await dialog.ShowAsync();
        }
    }
    

    此程式代碼會從 WNS 擷取應用程式的通道 URI,然後向通知中樞註冊該通道 URI。

    注意

    hub name佔位元取代為出現在 Azure 入口網站 的通知中樞名稱。 此外,將 連接字串 佔位元取代為您DefaultListenSharedAccessSignature在上一節中從通知中樞的 [存取原則] 頁面取得的 連接字串。

  11. 在中的App.xaml.cs事件處理程式頂端OnLaunched,將下列呼叫新增至新的 InitNotificationsAsync 方法:

    InitNotificationsAsync();
    

    此動作可確保每次應用程式啟動時,通道 URI 都會在您的通知中樞註冊。

  12. 以滑鼠右鍵按下Package.appxmanifest並選取 [檢視程序代碼] [F7]。 找出<Identity .../>並將 Name 值取代Package/Identity/Name,並以您稍早建立之應用程式的 Package/Identity/Publisher 值取代其發行

  13. 若要執行應用程式,請按鍵盤的 F5 鍵。 隨即會顯示包含註冊金鑰的對話方塊。 若要關閉對話框,請按兩下 [ 確定]。

    Registration successful

您的應用程式現在已準備好接收快顯通知。

傳送測試通知

您可以藉由在 Azure 入口網站傳送通知,快速測試應用程式中的接收通知。

  1. 在 [Azure 入口網站] 中,切換至 [概觀] 索引卷標,然後選取工具列上的 [測試傳送]。

    Test Send button

  2. 在 [ 測試傳送 ] 視窗中,執行下列動作:

    1. 針對 [ 平臺],選取 [Windows]。

    2. 針對 [ 通知類型],選取 [ 快顯通知]。

    3. 請選取傳送

      The Test Send pane

  3. 在視窗底部的 [結果] 列表中查看傳送作業的結果。 您也會看到警示訊息。

    Result of Send operation

  4. 您會看到通知訊息: 在桌面上測試訊息

    Notification message

下一步

您已使用入口網站或主控台應用程式,將廣播通知傳送至所有 Windows 裝置。 若要瞭解如何將通知推送至特定裝置,請繼續進行下列教學課程: