Windows Phone 8 / 8.1 Silverlight推送带Azure通知中心的通知

Technorati标签: Windows Phone,视窗,,Azure.,蔚蓝的通知枢纽,推送消息,推送消息,wp8,WP8 Silverlight. 推送通知 推送通知是通知用户更新的好方法。这可能是一个聊天消息,打破新闻或简单地提醒您的用户发生了一些兴趣,可能值得她才能检查出来。现在,当我们查看推送通知时,显然接收器类似于手机。在发送部分上,您将找到一些后端服务。一个启动推送通知的Web服务器。我将使用Xamarin.forms应用程序的此演示,但所有这些步骤都适用于标准Windows Phone Silverlight应用程序而没有任何差异。 NotificationShubbigpicture.

建立后端

现在让我们首先设置后端,以便我们可以发送推送通知消息,这需要有效 Azure.帐户。登录到 Azure. 并执行以下步骤:

  1. 点击 +新
  2. 点击 应用服务, 然后 服务巴士 然后选择 通知枢纽
  3. 输入名称,选择该区域,如果您尚未完成此选项已输入您的命名空间(如果您已创建名称空间,则不会出现此选项)。

CreateNotificationHub. 创建通知中心后,我们必须配置它与Windows Phone Silverlight一起使用。选择您的通知中心(命名空间),您将在此处找到 服务巴士 选项卡,然后选择刚刚创建的通知中心。

注意您可能在同一名称空间下有多个通知集线器,这可能是一旦您的应用程序处于现场,您就可以在下一个版本上开发,您可以通过这种方式分开开发和生产通知中心。

nhmpnssetup.现在用于发展最简单的方法是简单 启用未经身份验证的推送通知。 并保存更改。这在此时不需要注册应用程序。如果您已经完成了,所以您也可以上传您可以从中下载的证书 Windows开发人员门户网站.

使您的应用程序能够接收推送通知

创建Xamarin.Forms项目是 做得很容易。我们现在将执行以下步骤:

  1. 远程通知的权限
  2. 安装Azure Messaging Nuget包
  3. 在启动时注册您的应用程序
  4. 发送第一条消息

远程通知的权限

打开 wmappmanifest.xml. 位于下方的文件 特性 Windows手机项目。在能力下确保 id_cap_push_notification. is enabled. Mobile-app-enable-push-wp8

安装Azure Messaging Nuget包

通过右键单击Windows Phone项目并选择“打开Nuget Packager Manager” 管理尼古特包......。在里面 在线的 标签搜索包 Windowsazure.Messaging.Managed. 并在Windows Phone项目中安装它。

在启动时注册您的应用程序

现在让后端服务与我们的移动应用程序一起使用。这是在的 app.xaml.cs. 文件位于Windows Phone项目的根目录中。在这内 application_launching. 方法添加以下代码:

var channel = HttpNotificationChannel.Find("ChannelName");if (channel == null){    channel = new HttpNotificationChannel("ChannelName");    channel.Open();    channel.BindToShellToast();}channel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(async (o, args) =>{    var hub = new NotificationHub("<hub name>", "<connection string>");    await hub.RegisterNativeAsync(args.ChannelUri.ToString());});

这将需要以下内容:

使用 Microsoft.Phone.Notification;using Microsoft.WindowsAzure.Messaging;

请注意,频道名称是您的应用程序的个人,用于检查您的应用是否已注册推送通知。我们目前只绑定到ShellToast通知类型。现在让我们进入 轮毂名称连接字符串 对于您的消息传递集线器。由于Visual Studio中Azure的卓越集成打开服务器资源管理器(如果尚未存在于左侧,则可以在左侧找到它 看法 菜单),打开 Azure. 下拉,然后是 通知枢纽 并选择在我的示例中创建的通知中心,它命名为它 mallibone. 它类似于中心名称。在您的属性子视图中,您将看到连接字符串。您将不得不通过单击三个要点来获取完整连接字符串的视图,因为客户端只需要侦听连接字符串,因为我们不打算从此应用程序中的移动客户端写入推送通知。

复制连接字符串并将其插入到通知中心创建中 application_launching. method.

private void application_launching.(object sender, LaunchingEventArgs e){    var channel = HttpNotificationChannel.Find("MalliboneHelloWorldChannel");    if (channel == null)    {        channel = new HttpNotificationChannel("MalliboneHelloWorldChannel");        channel.Open();        channel.BindToShellToast();    }    channel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(async (o, args) =>    {        var hub = new NotificationHub("mallibone.", "Endpoint=sb://mallibone.servicebus.windows.net/;SharedAccessKeyName=DefaultListenSharedAccessSignature;SharedAccessKey=SOME_MUMBOJUMBO_AKA_THE_KEY        await hub.RegisterNativeAsync(args.ChannelUri.ToString());    });}

发送第一条消息

您现在可以发送通知,如果您的应用程序未打开,则会收到Toast通知。通过点击您的应用程序将打开的吐司通知。但是对于我们的第一条消息,让我们有一个应用程序运行,并且当消息发生时,该应用程序振动。

应用程序运行时处理推送通知

app.xaml.cs. 将以下行添加到 application_launching. method:

channel.ShellToastNotificationReceived += (o, args) => VibrationDevice.GetDefault().Vibrate(TimeSpan.FromMilliseconds(300));

这需要 使用:

使用 Windows.Phone.Devices.Notification;

确保在继续之前启动您的申请。

发送消息

在Server Explorer中,双击您的通知中心,将打开一个窗口,允许您发送推送通知并检查您的设备注册并检查VS :))。现在在类型选择 Windows手机MPNS. 接着 吐司。因为现在我们不必改变邮件,因此您的应用程序是否成功启动并且在您旁边嗡嗡作响,只需点击 发送.

向通知添加参数

发送通知是通知用户的好方法,但通常您不仅要想要一个花哨的Toast Tile,然后将您的应用程序启动到根页面,而是给用户通过点击Toast通知时选择的内容。因此,允许通过向Toast消息添加参数来扩展消息:

<?xml version="1.0" encoding="utf-8"?><wp:Notification xmlns:wp="WPNotification">    <wp:Toast>        <wp:Text1>NotificationHub</wp:Text1>        <wp:Text2>Test message</wp:Text2>        <wp:Param>/MainPage.xaml?helloParameter=1234&amp;secondParameter=SomeKey</wp:Param>    </wp:Toast></wp:Notification>

解析客户端上的参数

现在,当我们从后台启动应用程序时,即点击吐司通知,我们将启动应用程序并可以解析参数 mainPage.xaml.cs. 在里面 onnavigetto. method:

protected override void OnNavigatedTo(NavigationEventArgs e){    base.OnNavigatedTo(e);    const string helloParameter = "helloParemeter";    const string secondParameter = "secondParameter";    if (NavigationContext.QueryString.ContainsKey(helloParameter) && NavigationContext.QueryString.ContainsKey(secondParameter))    {        var message = string.Format("Received toast with HelloParameter {0} and SecondParemter {1}",            NavigationContext.QueryString[helloParameter], NavigationContext.QueryString[secondParameter]);        MessageBox.Show(message);    }}

在运行应用程序时解析参数,因为您可能已经猜到了 app.xaml.cs. 通过扩展事件处理程序来进行类。

结论

添加推送通知可以是您的应用程序的丰富补充,因为它允许您与您的用户互动并在发生某些事情后几秒钟内给予他新闻。通过使用Azure,您可以真正简化在多个平台上的推送服务的集成,因为我将在未来的帖子中向您展示。

参考

http://azure.microsoft.com/en-us/documentation/articles/notification-hubs-windows-phone-get-started/

Updated: