Как реализовать уведомления APNS через nodejs?
Есть ли у кого-то сейчас хороший модуль npm для реализации уведомлений Apple PUSH? Простой пример был бы великолепен.
Решение, которое я нашел, заключается в следующем, который использует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);