适用于 Windows Phone 应用的 Azure 通知中心入门

概述

Note

要完成本教程,必须有一个有效的 Azure 帐户。 如果没有帐户,可以创建一个试用帐户,只需几分钟即可完成。 有关详细信息,请参阅 Azure 1 元试用

本教程演示如何使用 Azure 通知中心将推送通知发送到 Windows Phone 8 或 Windows Phone 8.1 Silverlight 应用程序。 如果你要以 Windows Phone 8.1(非 Silverlight)为目标,请参阅 Windows Universal 版本。 在本教程中,你将创建一个空白 Windows Phone 8 应用,它使用 Microsoft 推送通知服务 (MPNS) 接收推送通知。 完成后,能够使用通知中心将推送通知广播到运行应用的所有设备。

Note

通知中心 Windows Phone SDK 不支持将 Windows 推送通知服务 (WNS) 与 Windows Phone 8.1 Silverlight 应用配合使用。 若要将 WNS(而不是 MPNS)与 Windows Phone 8.1 Silverlight 应用配合使用,请遵循使用 REST API 的 通知中心 - Windows Phone Silverlight 教程

本教程演示使用通知中心的简单广播方案。

先决条件

本教程需要的内容如下:

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

创建通知中心

  1. 登录到 Azure 门户

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

    Azure 门户 - 创建通知中心

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

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

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

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

    b. 选择“创建” 。

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

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

    Azure 门户 - 通知中心门户页

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

    Important

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

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

  1. 在“通知设置”下,选择“Windows Phone (MPNS)”,然后单击“启用未经身份验证的推送”复选框。

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

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

Note

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

将应用程序连接到通知中心

  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 包”。

    此时将显示“管理 NuGet 包”对话框。

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

    Visual Studio - NuGet 包管理器

    此时将使用 WindowsAzure.Messaging.Managed NuGet 包下载、安装并添加对 Windows 的 Azure 消息传送库的引用。

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

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

     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);
         });
     });
    

    Note

    MyPushChannel 是用于查找 HttpNotificationChannel 集合中现有通道的索引。 如果不存在,则使用该名称创建新条目。

    确保插入中心名称以及在前一部分中获取的名为 DefaultListenSharedAccessSignature 的连接字符串。 此代码从 MPNS 检索应用的通道 URI,并将该通道 URI 注册到用户的通知中心。 它还保证每次启动应用程序时都在通知中心注册通道 URI。

    Note

    本教程将一个 toast 通知发送到设备。 而发送磁贴通知时,必须在通道上调用 BindToShellTile 方法。 若要同时支持 toast 通知和磁贴通知,请同时调用 BindToShellTile 和 BindToShellToast。

  6. 在解决方案资源管理器中,展开“属性”,打开 WMAppManifest.xml 文件,单击“功能”选项卡并确保选中 ID_CAP_PUSH_NOTIFICATION 功能。

    Visual Studio - Windows Phone 应用功能

    这样可确保你的应用程序可收到推送通知。 如果没有它,则将无法成功向应用发送推送通知。

  7. F5 键以运行应用。

    随后应用中会显示注册消息。

  8. 关闭应用。

    Note

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

后续步骤

在这个简单的示例中,已将推送通知广播到所有 Windows Phone 8 设备。

要针对特定客户,请参考教程 使用通知中心将通知推送到用户

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

通知中心指南中了解有关如何使用通知中心的更多信息。