我希望创建 APNS(Apple 推送通知服务),其中服务器将向 iOS 设备发送通知。我能够使用相同的设备令牌和相同的证书通过 PHP 实现推送通知,但我想改用 Node JS 发送通知。
我有以下有效的文件/证书可帮助我入门:
- cert.pem
- key.pem
- aps_development.cer
- cert.p12
- key.p12
- ck.pem
我一直在查阅多个资源链接,例如:
在这样做之后,我能够编写出以下示例代码,其中 PASSWORD 表示 key.pem 的密码,TOKEN 表示我的设备令牌:
var apn = require("apn");
var path = require('path');
try {
var options = {
cert: path.join(__dirname, 'cert.pem'), // Certificate file path
key: path.join(__dirname, 'key.pem'), // Key file path
passphrase: '<PASSWORD>', // A passphrase for the Key file
ca: path.join(__dirname, 'aps_development.cer'),// String or Buffer of CA data to use for the TLS connection
production:false,
gateway: 'gateway.sandbox.push.apple.com', // gateway address
port: 2195, // gateway port
enhanced: true // enable enhanced format
};
var apnConnection = new apn.Connection(options);
var myDevice = new apn.Device("<TOKEN>");
var note = new apn.Notification();
note.expiry = Math.floor(Date.now() / 1000) + 3600; // Expires 1 hour from now.
note.badge = 3;
note.sound = "ping.aiff";
note.alert = "You have a new message";
note.payload = {'msgFrom': 'Alex'};
note.device = myDevice;
apnConnection.pushNotification(note);
process.stdout.write("******* EXECUTED WITHOUT ERRORS************ :");
} catch (ex) {
process.stdout.write("ERROR :"+ex);
}
执行此代码时没有出现错误,但问题是我的iOS设备上没有收到通知。我还尝试了在选项变量中设置ca:null&debug:true。但是仍然发生相同的情况。
同样,当我使用我拥有的ck.pem和设备令牌并将其与PHP一起使用时,它可以正常工作,但我无法使其在Node JS中工作。请帮忙!
非常感谢!
cert
、key
和production
:true/false。我按照https://github.com/argon/node-apn/wiki/Preparing-Certificates上的说明准备了证书和密钥文件。 - Chad Robinson