教程:使用通知中心向 Windows Phone 应用发送推送通知
注意
Azure 推送通知服务 (MPNS) 已弃用,不再受支持。
本教程演示如何使用 Azure 通知中心将推送通知发送到 Windows Phone 8 或 Windows Phone 8.1 Silverlight 应用程序。 如果要以 Windows Phone 8.1(非 Silverlight)为目标,请参阅本教程的 Windows Universal 版本。
本教程将创建一个空白 Windows Phone 8 应用,该应用使用 Azure 推送通知服务 (MPNS) 接收推送通知。 创建应用后,请使用通知中心将推送通知广播到运行应用的所有设备。
注意
通知中心 Windows Phone SDK 不支持将 Windows 推送通知服务 (WNS) 与 Windows Phone 8.1 Silverlight 应用配合使用。 要将 WNS(而不是 MPNS)与 Windows Phone 8.1 Silverlight 应用配合使用,请遵循使用 REST API 的 通知中心 - Windows Phone Silverlight 教程。
在本教程中,你将了解如何执行以下操作:
- 创建通知中心
- 创建 Windows Phone 应用程序
- 测试性发送通知
先决条件
- Azure 订阅。 如果没有 Azure 订阅,请在开始前创建试用版 Azure 订阅。
- 包含移动开发组件的 Visual Studio 2015 Express
完成本教程是学习有关 Windows Phone 8 应用的所有其他通知中心教程的先决条件。
创建通知中心
登录 Azure 门户。
在左侧菜单上选择“所有服务”,然后在“Web + 移动”部分选择“通知中心”。 选择服务名称旁边的星形图标,以便将服务添加到左侧菜单上的“收藏夹”部分。 在将“通知中心” 添加到“收藏夹” 之后,在左侧菜单上选择它。
在“通知中心”页面上,在工具栏上选择“创建”。
在“通知中心”页面上的“基本信息”选项卡中,执行以下步骤:
在“订阅”中,选择要使用的 Azure 订阅的名称,然后选择现有资源组或创建新资源组。
在“命名空间详细信息”中为新命名空间输入唯一名称。
命名空间包含一个或多个通知中心,因此请在“通知中心详细信息”中键入中心的名称。
从“位置”下拉列表框中选择值。 此值指定要在其中创建通知中心的位置。
选择创建。
部署完成后,选择“转到资源”。
配置 Windows Phone (MPNS) 设置
在“通知设置”下选择“Windows Phone (MPNS)”。
选择“启用身份验证推送” 。
在工具栏上选择“保存”。
中心现已创建,并已配置为向 Windows Phone 发送未经身份验证的通知。
注意
本教程使用未经身份验证模式下的 MPNS。 MPNS 未经身份验证的模式对可以发送到每个通道的通知有一些限制。 通知中心支持 MPNS 身份验证模式,它允许上传证书。
创建 Windows Phone 应用程序
在此部分,请创建一个可以自行注册到通知中心的 Windows Phone 应用程序。
在 Visual Studio 中创建一个新的 Windows Phone 8 应用程序。
在 Visual Studio 2013 Update 2 或更高版本中,必须改为创建 Windows Phone Silverlight 应用程序。
在 Visual Studio 中,右键单击该解决方案,并单击“管理 NuGet 包”。
搜索
WindowsAzure.Messaging.Managed
,单击“安装”,并接受使用条款。打开文件 App.xaml.cs 并添加以下
using
语句:using Microsoft.Phone.Notification; using Microsoft.WindowsAzure.Messaging;
在
App.xaml.cs
中的Application_Launching
方法顶部添加以下代码:private void Application_Launching(object sender, LaunchingEventArgs e) { var channel = HttpNotificationChannel.Find("MyPushChannel"); if (channel == null) { channel = new HttpNotificationChannel("MyPushChannel"); channel.Open(); channel.BindToShellToast(); } channel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(async (o, args) => { var hub = new NotificationHub("<hub name>", "<connection string>"); var result = await hub.RegisterNativeAsync(args.ChannelUri.ToString()); System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() => { MessageBox.Show("Registration :" + result.RegistrationId, "Registered", MessageBoxButton.OK); }); }); }
注意
值
MyPushChannel
是用于查找 HttpNotificationChannel 集合中现有通道的索引。 如果不存在,则使用该名称创建新条目。插入中心名称以及在前一部分记下的名为
DefaultListenSharedAccessSignature
的连接字符串。 此代码从 MPNS 检索应用的通道 URI,然后将该通道 URI 注册到通知中心。 它还保证每次启动应用程序时都在通知中心注册通道 URI。注意
本教程会一个 toast 通知发送到设备。 发送磁贴通知时,必须在通道上调用
BindToShellTile
方法。 若要同时支持 toast 通知和磁贴通知,请同时调用BindToShellTile
和BindToShellToast
。在解决方案资源管理器中,展开“属性”,打开
WMAppManifest.xml
文件,单击“功能”选项卡并确保选中 ID_CAP_PUSH_NOTIFICATION 功能。 应用现在可以接收推送通知了。按
F5
键以运行应用。 随后应用中会显示注册消息。关闭应用或切换到主页。
注意
若要接收 toast 推送通知,则应用程序不得在前台运行。
测试性发送通知
在 Azure 门户中切换到“概览”选项卡。
选择“测试性发送”。
在“测试性发送”窗口中执行以下步骤:
对于“平台”,请选择“Windows Phone” 。
对于“通知类型”,请选择“Toast”。
选择“发送”
请在窗口底部的列表中查看结果。
在 Windows Phone 模拟器或 Windows Phone 中,确认看到通知消息。
后续步骤
在这个简单的示例中,已将推送通知广播到所有 Windows Phone 8 设备。 若要了解如何向特定的设备推送通知,请转到以下教程: