使用 Azure 通知中心和 Node.js 发送推送通知

概述

Important

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

本指南介绍如何借助 Azure 通知中心,直接从 Node.js 应用程序发送推送通知。

涵盖的方案包括在下列平台将推送通知发送到应用程序:

  • Android
  • iOS
  • Windows Phone
  • 通用 Windows 平台

有关通知中心的详细信息,请参阅 后续步骤 部分。

什么是通知中心?

Azure 通知中心提供用于向移动设备发送推送通知的易于使用、多平台且可缩放的基础结构。 有关服务基础结构的详细信息,请参阅 Azure 通知中心 页。

创建 Node.js 应用程序

本教程的第一步是创建新的空白 Node.js 应用程序。 有关创建 Node.js 应用程序的说明,请参阅创建 Node.js 应用程序并将其部署到 Azure 网站、使用 Windows PowerShell 创建 Node.js 云服务使用 WebMatrix 创建网站

将应用程序配置为使用通知中心

若要使用 Azure 通知中心,请下载和使用 Node.js azure 包,其中包括一组可与推送通知 REST 服务通信的内置帮助程序库。

使用 Node 包管理器 (NPM) 可获取该程序包

  1. 使用 PowerShell (Windows)、Terminal (Mac) 或 Bash (Linux) 等命令行接口导航到在其中创建了空白应用程序的文件夹。
  2. 在命令窗口中键入 npm install azure-sb
  3. 可以手动运行 ls 或 dir 命令来验证是否创建了 node_modules 文件夹。 在该文件夹中,找到 azure 包,其中包含访问通知中心所需的库。

Note

可以在官方 NPM 博客中了解有关安装 NPM 的详细信息。

导入模块

使用文本编辑器将以下内容添加到应用程序的 server.js 文件的顶部:

var azure = require('azure');

设置 Azure 通知中心连接

可以通过 NotificationHubService 对象使用通知中心。 以下代码为名为“hubname”的通知中心创建一个 NotificationHubService 对象。 将它添加到靠近 server.js 文件顶部、用于导入 azure 模块的语句之后的位置:

var notificationHubService = azure.createNotificationHubService('hubname','connectionstring');

可通过执行以下步骤从 Azure 门户获取连接 connectionstring 值:

  1. 在左侧导航窗格中,单击“浏览” 。
  2. 选择“通知中心” ,并找到要用于示例的中心。 如果在创建新通知中心时需要获得帮助,可以参阅 Windows 应用商店入门教程
  3. Select Settings.
  4. 单击“访问策略” 。 会看到共享连接字符串和完全访问连接字符串。

Azure 门户 — 通知中心

Note

还可以使用 Azure PowerShell 提供的 Get-AzureSbNamespace cmdlet 或者在 Azure 命令行接口 (Azure CLI) 中使用 azure sb namespace show 命令检索连接字符串。

一般体系结构

NotificationHubService 对象公开以下对象实例,以便向特定设备和应用程序发送推送通知:

  • iOS - 使用 ApnsService 对象,该对象可在 notificationHubService.apns 中访问
  • Windows Phone - 使用 MpnsService 对象,该对象可从 notificationHubService.mpns 中获取
  • 通用 Windows 平台 - 使用 WnsService 对象,该对象可从 notificationHubService.wns 中获取

如何:向 iOS 应用程序发送推送通知

与上述 Android 应用程序一样,ApnsService 对象提供可用于将推送通知发送到 iOS 应用程序的 send 方法。 该 send 方法接受以下参数:

  • Tags - 标记标识符。 如果没有提供任何标记,通知会发送给所有客户端。
  • Payload - 消息的 JSON 或字符串的有效负载。
  • Callback - 回调函数。

有关有效负载格式的详细信息,请参阅 Local and Push Notification Programming Guide(本地通知和推送通知编程指南)文档中的通知有效负载部分。

以下代码使用由 NotificationHubService 公开的 ApnsService 实例将一条警报消息发送给所有客户端:

var payload={
    alert: 'Hello!'
  };
notificationHubService.apns.send(null, payload, function(error){
  if(!error){
     // notification sent
  }
});

如何:向 Windows Phone 应用程序发送推送通知

MpnsService 对象提供可用于将推送通知发送到 Windows Phone 应用程序的 send 方法。 该 send 方法接受以下参数:

  • Tags - 标记标识符。 如果没有提供任何标记,通知会发送给所有客户端。
  • Payload - 消息的 XML 有效负载。
  • TargetName - toast 用于 toast 通知。 token 表示磁贴通知。
  • NotificationClass - 通知的优先级。 有关该参数的有效值,请参阅 Push notifications from a server(从服务器推送通知)文档中的 HTTP Header Elements(HTTP 标头元素)部分。
  • Options - 可选的请求标头。
  • Callback - 回调函数。

有关有效的 TargetName、NotificationClass 和标头选项的列表,请查看 Push notifications from a server(从服务器推送通知)页面。

以下示例代码使用由 NotificationHubService 公开的 MpnsService 实例发送 toast 推送通知:

var payload = '<?xml version="1.0" encoding="utf-8"?><wp:Notification xmlns:wp="WPNotification"><wp:Toast><wp:Text1>string</wp:Text1><wp:Text2>string</wp:Text2></wp:Toast></wp:Notification>';
notificationHubService.mpns.send(null, payload, 'toast', 22, function(error){
  if(!error){
    //notification sent
  }
});

如何:向通用 Windows 平台 (UWP) 应用程序发送推送通知

WnsService 对象提供可用于将推送通知发送到通用 Windows 平台应用程序的 send 方法。 该 send 方法接受以下参数:

  • Tags - 标记标识符。 如果没有提供任何标记,通知会发送给所有已注册的客户端。
  • Payload - XML 消息有效负载。
  • Type - 通知类型。
  • Options - 可选的请求标头。
  • Callback — 回调函数。

若要了解有效的类型和请求标头的列表,请参阅 推送通知服务请求和响应头

以下代码使用由 NotificationHubService 公开的 WnsService 实例将 toast 推送通知发送到 UWP 应用:

var payload = '<toast><visual><binding template="ToastText01"><text id="1">Hello!</text></binding></visual></toast>';
notificationHubService.wns.send(null, payload , 'wns/toast', function(error){
  if(!error){
     // notification sent
  }
});

后续步骤

使用上述示例代码段,可以轻松地构建服务基础结构,将推送通知传递到各种设备。 了解使用通知中心和 node.js 的基础知识之后,请参考下列链接以了解有关如何进一步扩展这些功能的详细信息。