:calling: Apple Push Notification module for Node.js
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 8 年前 | ||
| 6 年前 | ||
| 9 年前 | ||
| 6 年前 | ||
| 9 年前 | ||
| 6 年前 | ||
| 8 年前 | ||
| 8 年前 | ||
| 7 年前 | ||
| 6 年前 | ||
| 9 年前 | ||
| 2 年前 | ||
| 6 年前 | ||
| 8 年前 | ||
| 6 年前 | ||
| 6 年前 |
node-apn
一个用于与苹果推送通知服务交互的Node.js模块。
功能特点
- 基于HTTP/2提供者API
- 保持与服务器连接以最大化批量推送和吞吐量。
- 在发生错误时自动重新发送未发送的通知
安装
首选安装方法是使用npm:
$ npm install apn --save
快速开始
这个文档是一个简短的入门指南,请参考doc/目录下的完整文档获取更多详细信息。
如果你之前使用的是v1.x版本,并想了解在v2.0中发生了什么变化,请参阅新特性。
加载模块
var apn = require('apn');
连接
向Apple Push Notification provider API创建一个新的连接,将选项字典传递给构造函数。你必须在选项中提供你的令牌凭证。
var options = {
token: {
key: "path/to/APNsAuthKey_XXXXXXXXXX.p8",
keyId: "key-id",
teamId: "developer-team-id"
},
production: false
};
var apnProvider = new apn.Provider(options);
默认情况下,除非设置了环境变量NODE_ENV=production,否则提供商会连接到沙盒环境。
有关配置选项的更多信息,请参阅提供者文档。
关于准备连接所需的密钥和证书文件的帮助,请参阅维基百科。
通过HTTP代理连接
如果需要通过HTTP代理连接,只需在创建提供商时提供proxy: {host, port}选项。例如:
var options = {
token: {
key: "path/to/APNsAuthKey_XXXXXXXXXX.p8",
keyId: "key-id",
teamId: "developer-team-id"
},
proxy: {
host: "192.168.10.92",
port: 8080
},
production: false
};
var apnProvider = new apn.Provider(options);
提供商会首先向指定的代理发送HTTP CONNECT请求,以建立HTTP隧道。一旦建立起来,它就会通过隧道创建一个新的安全连接到Apple Push Notification provider API。
发送通知
要发送通知,你需要从你的应用获得一个设备token字符串
let deviceToken = "a9d0ed10e9cfd022a61cb08753f49c5a0b0dfb383697bf9f9d750a1003da19c7"
创建一个通知对象,用相关参数进行配置(更多信息请参阅通知文档)。
var note = new apn.Notification();
note.expiry = Math.floor(Date.now() / 1000) + 3600; // 过期时间为1小时后
note.badge = 3;
note.sound = "ping.aiff";
note.alert = "\uD83D\uDCE7 \u2709 你有一条新的消息";
note.payload = {'messageFrom': 'John Appleseed'};
note.topic = "<你的应用捆绑ID>";
使用send方法将通知发送到API,该方法返回一个Promise。
apnProvider.send(note, deviceToken).then( (result) => {
// 查看文档以了解结果含义
});
这将导致以下通知负载被发送到设备:
{"messageFrom":"John Appleseed","aps":{"badge":3,"sound":"ping.aiff","alert":"\uD83D\uDCE7 \u2709 你有一条新的消息"}}
你应该只为每个证书/密钥对在进程中创建一个Provider。不需要为每个通知创建一个新的Provider。如果你只向一个应用发送通知,那么就不需要多个Provider。
如果你的应用程序中持续创建Provider实例,请确保在完成每个提供器后调用Provider.shutdown()来释放其资源和内存。
故障排查
首先阅读极其有用的Troubleshooting Push Notifications技术注解,看看你的问题是否已在那里找到答案。
支持
如果有任何问题或在使用模块时遇到困难,首先应该访问node-apn Google小组。
请尽可能提供详细信息,尤其是调试日志。如果问题是可复现的,示例代码也会非常有用。GitHub上的问题仅应创建用于验证的问题和改进,以便更轻松地跟踪。
资源
致谢
感谢:Ian Babrou,dgthistle,Keith Larsen,Mike P,Greg Bergé,Asad ur Rehman,Nebojsa Sabovic,Alberto Gimeno,Randall Tombaugh,Michael Stewart,Olivier Louvignes,porsager,Craig Hockenberry
许可证
根据MIT许可证发布
版权(c) 2013年 Andrew Naylor
特此免费授予任何获得本软件副本的人权限, 不受限制地使用,包括不受限制地使用、复制、修改、合并、发布、分发、 授予许可或销售本软件副本的权利,以及提供软件被提供的权利, 受以下条件约束:
上述版权声明和此授权通知应包含在所有副本或实质部分中。
本软件“按原样”提供,没有任何形式的明示或暗示保证,包括但不限于 对适销性、特定用途适用性和不侵权的保证。在任何情况下,作者或 版权持有者对于合同、侵权或其他原因引起的索赔,损害赔偿或其他责任, 是否因使用或与其他与本软件或其使用或交易相关的事务有关联, 不承担任何责任。