教程:使用通知中心向 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 应用程序
  • 测试性发送通知

先决条件

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

创建通知中心

  1. 登录 Azure 门户。

  2. 在左侧菜单上选择所有服务,然后在 Web + 移动部分选择通知中心。 选择服务名称旁边的星形图标,以便将服务添加到左侧菜单上的收藏夹部分。 在将通知中心添加到收藏夹之后,在左侧菜单上选择它。

    Azure 门户 - 选择“通知中心”

  3. 在通知中心页面上,在工具栏上选择创建。

    通知中心 -“添加”工具栏按钮

  4. 在通知中心页面上的基本信息选项卡中,执行以下步骤:

    1. 在订阅中,选择要使用的 Azure 订阅的名称,然后选择现有资源组或创建新资源组。

    2. 在命名空间详细信息中为新命名空间输入唯一名称。

    3. 命名空间包含一个或多个通知中心,因此请在通知中心详细信息中键入中心的名称。

    4. 从位置下拉列表框中选择值。 此值指定要在其中创建通知中心的位置。

    5. 选择创建。

  5. 部署完成后,选择“转到资源”。

配置 Windows Phone (MPNS) 设置

  1. 在“通知设置”下选择“Windows Phone (MPNS)”。

  2. 选择“启用身份验证推送” 。

  3. 在工具栏上选择“保存”。

    Azure 门户 - 启用未经身份验证的推送通知

    中心现已创建,并已配置为向 Windows Phone 发送未经身份验证的通知。

    注意

    本教程使用未经身份验证模式下的 MPNS。 MPNS 未经身份验证的模式对可以发送到每个通道的通知有一些限制。 通知中心支持 MPNS 身份验证模式,它允许上传证书。

创建 Windows Phone 应用程序

在此部分,请创建一个可以自行注册到通知中心的 Windows Phone 应用程序。

  1. 在 Visual Studio 中创建一个新的 Windows Phone 8 应用程序。

    Visual Studio - 新建项目 - Windows Phone 应用

    在 Visual Studio 2013 Update 2 或更高版本中,必须改为创建 Windows Phone Silverlight 应用程序。

    Visual Studio - 新建项目 - 空白应用 - Windows Phone Silverlight

  2. 在 Visual Studio 中,右键单击该解决方案,并单击“管理 NuGet 包”。

  3. 搜索 WindowsAzure.Messaging.Managed,单击“安装”,并接受使用条款。

    Visual Studio - NuGet 包管理器

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

    using Microsoft.Phone.Notification;
    using Microsoft.WindowsAzure.Messaging;
    
  5. 在 Application_Launching 中的 App.xaml.cs 方法顶部添加以下代码:

    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。

  6. 在解决方案资源管理器中,展开“属性”,打开 文件,单击“功能”选项卡并确保选中 WMAppManifest.xml 功能。 应用现在可以接收推送通知了。

    Visual Studio - Windows Phone 应用功能

  7. 按 F5 键以运行应用。 随后应用中会显示注册消息。

  8. 关闭应用或切换到主页。

    注意

    若要接收 toast 推送通知,则应用程序不得在前台运行。

测试性发送通知

  1. 在 Azure 门户中切换到“概览”选项卡。

  2. 选择“测试性发送”。

    “测试性发送”按钮

  3. 在“测试性发送”窗口中执行以下步骤:

    1. 对于“平台”,请选择“Windows Phone” 。

    2. 对于“通知类型”,请选择“Toast”。

    3. 选择“发送”

    4. 请在窗口底部的列表中查看结果。

      “测试性发送”窗口

  4. 在 Windows Phone 模拟器或 Windows Phone 中,确认看到通知消息。

    Windows Phone 中的通知

后续步骤

在这个简单的示例中,已将推送通知广播到所有 Windows Phone 8 设备。 若要了解如何向特定的设备推送通知,请转到以下教程: