我未能找到从Meteor应用程序发送推送通知的综合教程。我知道Meteor使用node.js运行,所以我一直在关注这个高度引用和推荐的教程https://blog.engineyard.com/2013/developing-ios-push-notifications-nodejs,但无济于事;在部署我的应用程序时,它上传但网站没有响应(并且鉴于部署没有错误,我无法看到问题所在,尽管我认为它与我如何组织文件有关)。
我已根据教程的说明正确下载并加载了所有证书。我已经使用他们的示例应用程序来正确获取我的测试设备的ID。在Meteor的文件夹配置中,我无法确定在哪里正确放置其他文件和依赖项。它应该如何与教程中的结构不同(换句话说,这个结构应该放在我的应用程序的.meteor
文件夹中的文件夹内)?
我认为最重要的问题是Meteor只是简单地构建他们的应用程序而不是普通的Node.js应用程序,因此我需要将这些证书和依赖项放在特定的文件夹中,而不仅仅是{{1的主应用程序文件夹}},application.html
和application.js
。
答案 0 :(得分:14)
我们在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
meteor包启用了npm
,您可以阅读here。或者,您可以在自己的Meteor包中放置使用apn包的代码,并使用Npm.require
作为@GeoffreyBooth建议。
==
2015年6月20日 - 更新
我最近回答了有关设备令牌的问题;希望这些资源有所帮助:
答案 1 :(得分:3)
使用Cordova PushPlugin
,您必须:
user
模型的集成,以便您可以选择将推送通知发送到哪些用户。.pem
和其他授权文件。事实上,这是相当多的工作。
raix:push
"解决"第一个问题,允许将推送通知传递给用户或用户组。但是:
.pem
文件进行版本控制,这对于正确的12因素应用程序来说当然不被视为安全做法。 Pushwoosh是一项服务,可让您轻松向您的应用发送推送通知,并包括自动设置和处理您的.pem
文件和证书以及超级丰富的功能集。
lpender:meteor-pushwoosh
是我写的一个包,
请注意,从pricing页面开始并不完全清楚,但在免费试用后,每月只需49美元即可继续使用其API以编程方式从您的应用生成消息
答案 2 :(得分:2)
如果你只关心iOS通知,那么alanning提到的apn包可能会起作用。
然而,Meteor有一个包raix:push,它更易于使用,并支持APN iOS,GCM Android和部分其他系统(APN Safari网站,GCM Chrome OS, Firefox OS)。