使用 Azure 通知中心和 Node.js 发送推送通知
概述
重要
要完成本教程,必须有一个有效的 Azure 帐户。 如果没有帐户,请通过 Azure 试用版订阅花几分钟创建一个试用帐户。
本指南介绍如何借助 Azure 通知中心,直接从 Node.js 应用程序发送推送通知。
涵盖的方案包括在下列平台将推送通知发送到应用程序:
- Android
- iOS
- 通用 Windows 平台
- Windows Phone
通知中心
Azure 通知中心提供用于向移动设备发送推送通知的易于使用、多平台且可缩放的基础结构。 有关服务基础结构的详细信息,请参阅 Azure 通知中心 页。
创建 Node.js 应用程序
本教程的第一步是创建新的空白 Node.js 应用程序。 有关创建 Node.js 应用程序的说明,请参阅创建 Node.js 应用程序并将其部署到 Azure 网站、使用 Windows PowerShell 创建 Node.js 云服务或使用 WebMatrix 创建网站。
将应用程序配置为使用通知中心
若要使用 Azure 通知中心,请下载和使用 Node.js azure 包,其中包括一组可与推送通知 REST 服务通信的内置帮助程序库。
使用 Node 包管理器 (NPM) 可获取该程序包
- 使用 PowerShell (Windows)、Terminal (Mac) 或 Bash (Linux) 等命令行接口导航到在其中创建了空白应用程序的文件夹 。
- 在命令窗口中执行
npm install azure-sb
。 - 可以手动运行
ls
或dir
命令来验证是否创建了node_modules
文件夹。 - 在该文件夹中,找到 azure 包,其中包含访问通知中心所需的库。
注意
可在官方 NPM 博客中了解有关安装 NPM 的详细信息。
导入模块
使用文本编辑器将以下内容添加到应用程序的 server.js
文件的顶部:
var azure = require('azure-sb');
设置 Azure 通知中心连接
可以通过 NotificationHubService
对象使用通知中心。 以下代码为名为 hubname
的通知中心创建 NotificationHubService
对象。 将它添加到靠近 server.js
文件顶部、用于导入 Azure 模块的语句之后的位置:
var notificationHubService = azure.createNotificationHubService('hubname','connectionstring');
通过执行以下步骤从 Azure 门户 获取连接 connectionstring
值:
- 在左侧导航窗格中,单击“浏览” 。
- 选择“通知中心” ,并找到要用于示例的中心。 如果在创建新通知中心时需要帮助,可以参阅 Windows 应用商店入门教程。
- 选择“设置”。
- 单击“访问策略” 。 会看到共享连接字符串和完全访问连接字符串。
注意
还可以通过 Azure PowerShell 中的 Get-AzureSbNamespace
cmdlet 或 Azure 经典 CLI 中的 azure sb namespace show
命令检索连接字符串。
一般体系结构
NotificationHubService
对象公开以下对象实例,以便向特定设备和应用程序发送推送通知:
- iOS - 使用可在
notificationHubService.apns
访问的ApnsService
对象 - Windows Phone - 使用可在
notificationHubService.mpns
获得的MpnsService
对象 - 通用 Windows 平台 - 使用可在
notificationHubService.wns
获得的WnsService
对象
如何:向 iOS 应用程序发送推送通知
与上述 Android 应用程序一样,ApnsService
对象提供可用于将推送通知发送到 iOS 应用程序的 send
方法。 该 send
方法接受以下参数:
- Tags - 标记标识符。 如果没有提供任何标记,通知会发送给所有客户端。
- Payload - 消息的 JSON 或字符串的有效负载。
- Callback - 回调函数。
有关有效负载格式的详细信息,请参阅 UserNotifications 指南的“通知内容”部分。
以下代码使用由 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
和标头选项的列表,请查看从服务器推送通知页面。
以下示例代码使用由 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 的基础知识之后,请参考下列链接以了解有关如何进一步扩展这些功能的详细信息。
- 请参阅 Azure 通知中心的 MSDN 参考。
- 请访问 GitHub 上的 用于 Node 的 Azure SDK 存储库以获取更多示例和实施详细信息。