Node.js 如何通过nodejs实现APNS通知?

Node.js 如何通过nodejs实现APNS通知?,node.js,notifications,apple-push-notifications,push,Node.js,Notifications,Apple Push Notifications,Push,现在是否有人使用了一个好的npm模块来实现Apple推送通知? 举个简单的例子就好了 我找到的解决方案如下所示,它使用了apn模块 var apn = require('apn'); var ca = ['entrust_2048_ca.cer']; /* Connection Options */ var options = { cert: 'path to yuour cert.pem', key: 'path to your key.pem',

现在是否有人使用了一个好的npm模块来实现Apple推送通知? 举个简单的例子就好了

我找到的解决方案如下所示,它使用了apn模块

var apn = require('apn');

var ca = ['entrust_2048_ca.cer'];

/* Connection Options */
var options = {
        cert: 'path to yuour cert.pem',
        key: 'path to your key.pem',
        ca: ca,
        passphrase: 'your passphrase',
        production: true,
        connectionTimeout: 10000
};

var apnConnection = new apn.Connection(options);


/* Device */
var deviceToken = 'your device token';    
var myDevice = new apn.Device(deviceToken);

/* Notification */
var note = new apn.Notification();

note.expiry = Math.floor(Date.now() / 1000) + 3600; // Expires 1 hour from now.
note.badge = 3;
note.payload = {'message': 'hi there'};

apnConnection.pushNotification(note, myDevice);
如果需要使用APNS反馈服务来避免向无法接收通知的设备发送通知(应用程序已卸载),则可以添加以下内容:

/* Feedback Options */
var feedbackOptions = {
        cert: 'path to yuour cert.pem',
        key: 'path to your key.pem',
        ca: ca,
        passphrase: 'your passphrase',
        production: true,
        interval: 10
};

var feedback = new apn.feedback(feedbackOptions);

feedback.on('feedback', handleFeedback);
feedback.on('feedbackError', console.error);

function handleFeedback(feedbackData) {
    var time, device;
    for(var i in feedbackData) {
        time = feedbackData[i].time;
        device = feedbackData[i].device;

        console.log("Device: " + device.toString('hex') + " has been unreachable, since: " + time);
    }
}
apnConnection.on('connected', function(openSockets) {
  //
});

apnConnection.on('error', function(error) {
  //
});

apnConnection.on('transmitted', function(notification, device) {
  //
});

apnConnection.on('transmissionError', function(errCode, notification, device) {
  //
});

apnConnection.on('drain', function () {
  //
});

apnConnection.on('timeout', function () {
  //
});

apnConnection.on('disconnected', function(openSockets) {
  //
});

apnConnection.on('socketError', console.error);
要处理连接到该连接的不同事件,可以使用以下命令:

/* Feedback Options */
var feedbackOptions = {
        cert: 'path to yuour cert.pem',
        key: 'path to your key.pem',
        ca: ca,
        passphrase: 'your passphrase',
        production: true,
        interval: 10
};

var feedback = new apn.feedback(feedbackOptions);

feedback.on('feedback', handleFeedback);
feedback.on('feedbackError', console.error);

function handleFeedback(feedbackData) {
    var time, device;
    for(var i in feedbackData) {
        time = feedbackData[i].time;
        device = feedbackData[i].device;

        console.log("Device: " + device.toString('hex') + " has been unreachable, since: " + time);
    }
}
apnConnection.on('connected', function(openSockets) {
  //
});

apnConnection.on('error', function(error) {
  //
});

apnConnection.on('transmitted', function(notification, device) {
  //
});

apnConnection.on('transmissionError', function(errCode, notification, device) {
  //
});

apnConnection.on('drain', function () {
  //
});

apnConnection.on('timeout', function () {
  //
});

apnConnection.on('disconnected', function(openSockets) {
  //
});

apnConnection.on('socketError', console.error);

如果有人向我展示了一个更好的APNS模块,我会将他的模块标记为已接受