适用于通用 Windows 平台应用的通知中心入门

概述

本文介绍如何使用 Azure 通知中心将推送通知发送到通用 Windows 平台 (UWP) 应用。

本文介绍如何创建一个空白 Windows 应用商店应用,该应用使用 Windows 推送通知服务 (WNS) 接收推送通知。 完成后,便可以使用通知中心将推送通知广播到运行应用的所有设备。

准备阶段

本文旨在帮助你尽可能快地开始使用 Azure 通知中心。 本文提供了一个非常简单的广播方案,侧重于介绍通知中心的基本概念。

如果已经熟悉通知中心,可能需要从左侧导航栏中选择另一个主题,或转到“后续步骤”部分中的相关文章。

我们非常重视反馈。 如果在完成本主题的过程中遇到任何难题,或者在改进此内容方面有任何建议,我们邀请你在本文末尾提供反馈。

可以在 GitHub 上找到本教程的已完成代码。

先决条件

本教程需要的内容如下:

完成本教程是学习有关 UWP 应用的所有其他通知中心教程的先决条件。

为 Windows 应用商店注册应用程序

要将推送通知发送到 UWP 应用,请将应用关联到 Windows 应用商店。 然后将通知中心配置为与 WNS 集成。

  1. 如果尚未注册应用,请导航到 Windows 开发人员中心,使用 Microsoft 帐户登录,并选择“创建新应用”。

  2. 键入应用的名称,并选择“保留应用名称”。 这将为应用创建一个新的 Windows 应用商店注册。

  3. 在 Visual Studio 中,使用 UWP“空白应用”模板来创建一个新的 Visual C# 应用商店应用项目,并选择“确定”。

  4. 接受目标和最低平台版本的默认值。

  5. 在“解决方案资源管理器”中,右键单击 Windows 应用商店应用项目,选择“应用商店”,然后选择“将应用与应用商店关联”。
    此时会显示“将应用与 Windows 应用商店关联”向导。

  6. 在向导中,使用 Microsoft 帐户登录。

  7. 选择在第 2 步中注册的应用,选择“下一步”,然后选择“关联”。 这会将所需的 Windows 应用商店注册信息添加到应用程序清单中。

  8. 回到新应用的 Windows 开发人员中心页,依次选择“服务”、“推送通知”、“WNS/MPNS”。

  9. 选择“新建通知”。

  10. 选择“空白(Toast)”模板,然后选择“确定”。

  11. 输入通知名称和 Visual 上下文消息,然后选择“另存为草稿”。

  12. 访问应用程序注册门户并登录。

  13. 选择应用程序名称。 在“Windows 应用商店”平台设置中,记下“应用程序机密”密码和“包安全标识符(SID)”。

    Warning

    应用程序机密和程序包 SID 是重要的安全凭据。 请勿将这些值告知任何人或随应用程序分发它们。

配置通知中心

  1. 登录到 Azure 门户

  2. 选择“新建” > “Web + 移动” > “通知中心”。

    Azure 门户 - 创建通知中心

  3. 在“通知中心”框中,键入一个唯一名称。 选择“区域”、“订阅”和“资源组”(如果已经有一个)。

    如果尚无服务总线命名空间,可以使用基于中心名称创建的默认名称(如果该命名空间名称可用)。

    如果已有要在其中创建中心的服务总线命名空间,请执行以步骤

    a. 在“命名空间”区域中,选择“选择现有”链接。

    b. 选择“创建” 。

    Azure 门户 - 设置通知中心属性

  4. 创建命名空间和通知中心以后,请将其打开,方法是先选择“所有资源”,然后从列表中选择创建的通知中心。

    Azure 门户 - 通知中心门户页

  5. 从列表中选择“访问策略”。 记下向你提供的两个连接字符串。 稍后在处理推送通知时需要它们。

    Important

    在应用程序中使用 DefaultFullSharedAccessSignature。 这只能在后端使用。

    Azure 门户 - 通知中心连接字符串

  1. 在“Notification Services”下选择“Windows (WNS)”,然后在“安全密钥”框中输入应用程序机密密码。 在“包 SID”框中,输入在之前部分从 WNS 获取的值,并选择“保存”。

    “包 SID”框和“安全密钥”框

通知中心现在已配置为使用 WNS。 你有了用于注册应用和发送通知的连接字符串。

将应用连接到通知中心

  1. 在 Visual Studio 中,右键单击该解决方案,并选择“管理 NuGet 包”。
    此时会打开“管理 NuGet 包”窗口。

  2. 在搜索框中,输入 WindowsAzure.Messaging.Managed,选择“安装”,并接受使用条款。

    “管理 NuGet 包”窗口

    此操作会使用 WindowsAzure.Messaging.Managed NuGet 包下载、安装用于 Windows 的 Azure 消息传送库,并添加对该传送库的引用。

  3. 打开 App.xaml.cs 项目文件并添加以下 using 语句:

     using Windows.Networking.PushNotifications;
     using Microsoft.WindowsAzure.Messaging;
     using Windows.UI.Popups;
    
  4. 在 App.xaml.cs 中,另外将以下 InitNotificationsAsync 方法定义添加到 App 类中:

     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 注册到用户的通知中心。

    Note

    • 将“hub name”占位符替换为出现在 Azure 门户中的通知中心的名称。
    • 另外,使用在之前部分中从通知中心的“访问策略”页获取的 DefaultListenSharedAccessSignature 连接字符串替换连接字符串占位符。
  5. 在 App.xaml.cs 中 OnLaunched 事件处理程序的上方,添加对新 InitNotificationsAsync 方法的以下调用:

     InitNotificationsAsync();
    

    此操作保证每次启动应用程序时都在通知中心注册通道 URI。

  6. 若要运行应用,请选择 F5 键。 此时会显示包含注册密钥的对话框。

应用现在已能够接收 toast 通知。

发送通知

可以通过在 Azure 门户中发送通知来快速测试在应用中接收通知。 使用通知中心中的“测试发送”按钮,如下图所示:

“测试发送”窗格

通常,推送通知是在移动服务或 ASP.NET 等后端服务中使用兼容库发送的。 如果后端没有可用的库,则也可以直接使用 REST API 发送通知消息。

本教程演示如何简单地通过在控制台应用程序(而不是后端服务)中为通知中心发送使用 .NET SDK 的通知,来测试客户端应用。 建议接下来学习使用通知中心向用户推送通知教程,以了解如何从 ASP.NET 后端发送通知。 但是,可以通过使用以下方法发送通知:

后续步骤

这个简单示例使用门户或控制台应用将广播通知发送到所有 Windows 设备。 建议下一步学习使用通知中心向用户推送通知教程。 它演示了如何使用标记从 ASP.NET 后端将通知发送到目标特定的用户。

如果要按兴趣组划分用户,可以阅读 使用通知中心发送突发新闻

有关通知中心的更多常规信息,请参阅通知中心指南