node-apn:基于 Node.js 的 Apple 推送通知服务模块

:calling: Apple Push Notification module for Node.js

分支6Tags61
文件最后提交记录最后更新时间
8 年前
6 年前
9 年前
6 年前
9 年前
6 年前
8 年前
8 年前
7 年前
6 年前
9 年前
2 年前
6 年前
8 年前
6 年前
6 年前

node-apn

一个用于与苹果推送通知服务交互的Node.js模块。

维护状态:希望得到帮助 构建状态 代码覆盖率 Codacy 分级 依赖状态 开发依赖状态

功能特点

  • 基于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上的问题仅应创建用于验证的问题和改进,以便更轻松地跟踪。

资源

致谢

Andrew Naylor创建

感谢:Ian BabroudgthistleKeith LarsenMike PGreg BergéAsad ur RehmanNebojsa SabovicAlberto GimenoRandall TombaughMichael StewartOlivier LouvignesporsagerCraig Hockenberry

许可证

根据MIT许可证发布

版权(c) 2013年 Andrew Naylor

特此免费授予任何获得本软件副本的人权限, 不受限制地使用,包括不受限制地使用、复制、修改、合并、发布、分发、 授予许可或销售本软件副本的权利,以及提供软件被提供的权利, 受以下条件约束:

上述版权声明和此授权通知应包含在所有副本或实质部分中。

本软件“按原样”提供,没有任何形式的明示或暗示保证,包括但不限于 对适销性、特定用途适用性和不侵权的保证。在任何情况下,作者或 版权持有者对于合同、侵权或其他原因引起的索赔,损害赔偿或其他责任, 是否因使用或与其他与本软件或其使用或交易相关的事务有关联, 不承担任何责任。

项目介绍

调用适用于Node.js的Apple Push Notification模块【此简介由AI生成】

定制我的领域
1044.4 K679访问 GitHub