教程:使用 Azure 通知中心向通用 Windows 平台应用发送通知
本教程介绍如何创建通知中心,以便将推送通知发送到通用 Windows 平台 (UWP) 应用。 创建一个空白 Windows 应用商店应用,以便使用 Windows 推送通知服务 (WNS) 接收推送通知。 然后即可使用通知中心将推送通知广播到运行应用的所有设备。
注意
可以在 GitHub 上找到本教程的已完成代码。
执行以下步骤:
- 在 Windows 应用商店中创建应用
- 创建通知中心
- 创建示例 Windows 应用
- 发送测试通知
先决条件
- Azure 订阅。 如果没有 Azure 订阅,请在开始前创建试用版 Azure 订阅。
- Microsoft Visual Studio 2017 或更高版本。 本教程中的示例使用 Visual Studio 2019。
- 已安装 UWP 应用开发工具
- 有效的 Windows 应用商店帐户
- 确认已启用“从应用和其他发送方获取通知” 设置。
- 在计算机上启动“设置” 窗口。
- 选择“系统” 磁贴。
- 从左侧菜单中选择“通知和操作”。
- 确认已启用“从应用和其他发送方获取通知” 设置。 如果未启用,请启用它。
完成本教程是学习有关 UWP 应用的所有其他通知中心教程的先决条件。
在 Windows 应用商店中创建应用
注意
Azure 推送通知服务 (MPNS) 已弃用,不再受支持。
要将推送通知发送到 UWP 应用,请将应用关联到 Windows 应用商店。 然后将通知中心配置为与 WNS 集成。
导航到 Windows 开发人员中心,使用 Azure 帐户登录,然后选择“新建应用”。
键入应用的名称,然后选择“保留产品名称”。 这将为应用创建一个新的 Windows 应用商店注册。
展开“产品管理”,然后选择“产品标识”。 记下 Package SID、Package/Identity/Name、Package/Identity/Publisher 和 Package/Properties/PublisherDisplayName 等值。
在“产品管理”下,选择“WNS/MPNS”,然后选择“应用注册门户”。 登录 Azure 帐户。 应用程序注册页会在新选项卡中打开。
在“概要”下,选择“客户端凭据:添加证书或机密”。
在“证书和机密”页的“客户端机密”下,选择“+ 新建客户端机密”。 在创建客户端机密(也称为应用程序机密)后,请在离开该页面之前记下该机密。
警告
你只能在客户端机密(应用程序机密)值刚创建好时看到它们。 请确保在离开该页面之前保存该机密。
警告
应用程序机密和程序包 SID 是重要的安全凭据。 请勿将这些值告知任何人或随应用程序分发它们。
创建通知中心
登录 Azure 门户。
在左侧菜单上选择“所有服务”,然后在“Web + 移动”部分选择“通知中心”。 选择服务名称旁边的星形图标,以便将服务添加到左侧菜单上的“收藏夹”部分。 在将“通知中心” 添加到“收藏夹” 之后,在左侧菜单上选择它。
在“通知中心”页面上,在工具栏上选择“创建”。
在“通知中心”页面上的“基本信息”选项卡中,执行以下步骤:
在“订阅”中,选择要使用的 Azure 订阅的名称,然后选择现有资源组或创建新资源组。
在“命名空间详细信息”中为新命名空间输入唯一名称。
命名空间包含一个或多个通知中心,因此请在“通知中心详细信息”中键入中心的名称。
从“位置”下拉列表框中选择值。 此值指定要在其中创建通知中心的位置。
选择创建。
部署完成后,选择“转到资源”。
配置中心的 WNS 设置
在“通知设置”类别中选择“Windows (WNS)”。
输入你在前一部分记下的“包 SID”(如“ms-app://
<Your Package SID>
”)和“安全密钥”(应用程序机密)的值。单击工具栏上的“保存”。
通知中心现在已配置为使用 WNS。 你有了用于注册应用和发送通知的连接字符串。
创建示例 Windows 应用
在 Visual Studio 中打开“文件” 菜单,选择“新建” ,然后选择“项目” 。
在“创建新项目”对话框中完成以下步骤:
在顶部的搜索框中,键入“Windows 通用”。
在搜索结果中选择“空白应用(通用 Windows)”,然后选择“下一步”。
在“配置新项目”对话框中输入项目名称,并指定项目文件的位置。
选择“创建” 。
接受目标和最低平台版本的默认值,然后选择“确定”。
在“解决方案资源管理器”中,右键单击 Windows Store 应用项目,选择“发布”,然后选择“将应用与 Store 相关联”。 此时会显示“将应用与 Windows 应用商店关联”向导。
在向导中,使用 Azure 帐户登录。
选择在第 2 步中注册的应用,选择“下一步”,然后选择“关联” 。 这会将所需的 Windows 应用商店注册信息添加到应用程序清单中。
在 Visual Studio 中,右键单击该解决方案,并选择“管理 NuGet 包”。 此时会打开“管理 NuGet 包” 窗口。
在搜索框中,输入 WindowsAzure.Messaging.Managed,选择“安装” ,并接受使用条款。
此操作使用 Microsoft.Azure.NotificationHubs NuGet 包下载、安装并添加对 Azure 通知中心库的引用。
打开
App.xaml.cs
项目文件并添加以下语句:using Windows.Networking.PushNotifications; using Microsoft.WindowsAzure.Messaging; using Windows.UI.Popups;
在项目的
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
连接字符串替换连接字符串占位符 。在
App.xaml.cs
中OnLaunched
事件处理程序的上方,添加对新InitNotificationsAsync
方法的以下调用:InitNotificationsAsync();
此操作保证每次启动应用程序时都在通知中心注册通道 URI。
右键单击
Package.appxmanifest
,然后选择“查看代码(F7)”。 找到<Identity .../>
,并将“Name”值替换为“Package/Identity/Name”,再将其“Publisher”值替换为你在前面创建的应用中的“Package/Identity/Publisher”值。若要运行应用,请按键盘的 F5 键。 此时会显示包含注册密钥的对话框。 若要关闭对话框,请单击“确定”。
应用现在已能够接收 toast 通知。
发送测试通知
可以通过在 Azure 门户中发送通知来快速测试在应用中接收通知。
在 Azure 门户中切换到“概览”选项卡,然后在工具栏上选择“测试性发送”。
在“测试性发送”窗口中执行以下操作:
对于“平台”,请选择“Windows” 。
对于“通知类型”,请选择“Toast”。
选择Send。
请在窗口底部的“结果”列表中查看“发送”操作的结果。 此外还会看到一条警报消息。
会看到通知消息:桌面上的测试消息。
后续步骤
使用门户或控制台应用将广播通知发送到所有 Windows 设备。 若要了解如何向特定的设备推送通知,请转到以下教程: