我们在Meteor应用程序中使用
apn npm包。尽管由于相同的教程我们也看了apnagent,但由于apn更受欢迎,所以我们选择了它。虽然apnagent在Meteor应用程序中也可以正常工作,但您可能希望尝试apn来进行故障排除。
我们这样在服务器端设置...
var apn = Meteor.require("apn"),
path = Npm.require('path'),
apnOptions = Meteor.settings.apnOptions || {},
alertSound = apnOptions.sound || "alert.aiff",
apnConnection
// default apn connection options
apnOptions = _.extend({
cert: path.join(appRootPath, "private", "cert.pem"),
key: path.join(appRootPath, "private", "key.pem"),
}, apnOptions)
apnConnection = new apn.Connection(apnOptions)
...并像这样使用它:
sendAppleNotifications: function (alert, url, pushIds) {
var note = new apn.Notification()
// expires 1 hour from now
note.expiry = Math.floor(Date.now() / 1000) + 3600
note.sound = alertSound
note.alert = alert
note.payload = {'url': url}
_.each(pushIds, function (token) {
var device = new apn.Device(token)
apnConnection.pushNotification(note, device)
})
return {success:'ok'}
}, // end sendAppleNotifications
注意,
Meteor.require
是由
npm
meteor包启用的,您可以在
这里了解更多信息。或者,您可以将使用apn包的代码放入您自己的Meteor包中,并像
@GeoffreyBooth建议的那样使用
Npm.require
。
==
2015年6月20日 - 更新
我最近回答了一个关于设备令牌的问题;希望以下资源对您有所帮助:
apnagent
封装成一个新的 Meteor 包。请参考 https://github.com/oortcloud/unofficial-meteor-faq#what-about-npm-node-modules - Geoffrey Booth