use*_*775 5 certificate apple-push-notifications node.js
我正在使用apn从node.js App向Apple发送推送通知.
我的代码:
// send to development****
var dev_cert_path = path.join(__dirname, '..', 'cert.pem');
var dev_key_path = path.join(__dirname, '..', 'key.pem');
var devOptions = { "gateway": "gateway.sandbox.push.apple.com" , "cert": dev_cert_path, "key": dev_key_path, "passphrase":'XXXXX'};
var devApnConnection = new apn.Connection(devOptions)
, devMyDevice = new apn.Device(token)
, devNote = new apn.Notification();
devNote.expiry = Math.floor(Date.now() / 1000) + 3600; // Expires 1 hour from now.
devNote.badge = 3;
devNote.sound = "xxx.aiff";
devNote.alert = message;
devNote.payload = {'messageFrom': ''};
devApnConnection.pushNotification(devNote, devMyDevice);
var options = {
"batchFeedback": true,
"interval": 1
};
var devFeedback = new apn.Feedback(options);
devFeedback.on("feedback", function(devices) {
devices.forEach(function(item) {
logger.debug("device error : " + item.device);
// Do something with item.device and item.time;
});
});
devApnConnection.on('transmitted', function(res){
logger.debug("sent this message:"+JSON.stringify(devNote)+ " to this device: " + devMyDevice);
});
devApnConnection.on('error', function(res){
logger.error("sending message failed to this device: " + devMyDevice + " data: " + JSON.stringify(res) );
});
}
catch(e)
{logger.error("Push notification error: ",e.message);}
Run Code Online (Sandbox Code Playgroud)
我的问题:
当向node.js发送请求时,它发送推送通知,但我Enter PEM pass phrase:在终端中收到很多:
/projects/my_app$ node app.js
POST /requests 200 14ms
Enter PEM pass phrase:
Enter PEM pass phrase:
Enter PEM pass phrase:
Enter PEM pass phrase:
Enter PEM pass phrase:
Enter PEM pass phrase:
Run Code Online (Sandbox Code Playgroud)
所以我的应用程序被卡住,直到重新启动节点......任何想法?
编辑:
我试图从文件中删除密码:
openssl rsa -in key.pem -out nopassword.pem
Run Code Online (Sandbox Code Playgroud)
但我还是在应用程序控制台得到这一点 - 但按输入时,停止点击进入时,或密码短语拍摄此消息,直到下一个请求(除去通之前,它显示出许多消息,直到重新启动应用程序,还)...
我发现了问题......
我不得不在反馈选项中添加证书,密钥和密码.
var options = {
"batchFeedback": true,
"interval": 300
};
var devFeedback = new apn.Feedback(options);
devFeedback.on("feedback", function(devices) {
devices.forEach(function(item) {
logger.debug("device error : " + item.device);
// Do something with item.device and item.time;
});
});
Run Code Online (Sandbox Code Playgroud)
选项应该是:
var options = {
"batchFeedback": true,
"interval": 1,
"production": false,
"cert": dev_cert_path,
"key": dev_key_path,
"passphrase":'XXXXX'
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2748 次 |
| 最近记录: |