如何从Meteor应用程序发送iOS推送通知?

我没有find从Meteor应用程序发送推送通知的综合教程。 我明白,meteor运行使用node.js,所以我一直在跟随这个高度引用和推荐的教程https://blog.engineyard.com/2013/developing-ios-push-notifications-nodejs但无济于事; 在部署我的应用程序时,它会上传,但是网站却没有响应(因为部署没有错误,我不能看到问题出在哪里,但我认为这与我如何组织文件有关)。

我已经按照教程的说明正确下载并加载了所有的证书。 我已经使用他们的示例应用程序来正确获取我的testing设备的ID。 我只是无法弄清楚在哪里放置额外的文件和依赖Meteor的文件夹configuration。 它应该与教程中的结构有什么不同(换句话说,这个结构应该放在我的应用程序的.meteor文件夹中的一个文件夹内吗?

我认为最重要的问题是Meteor只是简单地构build它们的应用程序,而不是简单的Node.js应用程序,因此我需要将这些证书和依赖项放在特定的文件夹中,而不仅仅是具有application.html application.js的主应用程序文件夹application.jsapplication.css

我们在我们的Meteor应用程序中使用了apn npm包。 我们看着apnagent(因为同一个教程),但是由于更受欢迎,所以和apn一起去了。 虽然apnagent也应该在您的Meteor应用程序内正常工作,但您可能只想尝试进行故障排除。

我们这样设置它的服务器端…

 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是由npmmeteor包启用,你可以在这里阅读。 或者,你可以把你的代码用在你自己的Meteor包中,并使用Npm.require作为@GeoffreyBoothbuild议。

==

2015年6月20日 – 更新

我最近回答了关于设备令牌的问题; 希望这些资源是有帮助的:

  • 令牌生成和扩散,苹果文档

  • 如何获取设备标记,请参阅文章的示例IOS应用程序部分中的步骤10

  • 发送通知,apn图书馆文件

使用cordovaPushPlugin ,你将不得不:

  • 与Meteor user模型进行自我整合,以便您可以select将哪些用户发送到您的推送通知。
  • 生成自己的证书,
  • 安全地存储关联的.pem和其他授权文件。

事实上,这是相当多的工作。

raix:push “解决”第一个问题,允许将推送通知传送给用户或用户组。 然而:

  • 它不再被维护。
  • 它不(以我的经验)工作了。 iOs通知显示,但他们不震动电话或发出任何声音。 有人build议黑客绕过它,但没有一个为我工作。
  • 它会要求您对生产密码和.pem文件进行版本升级,这对于正确的12因子应用程序来说当然不被认为是安全的做法。

Pushwoosh是一项服务,可以轻松地将推送通知发送到您的应用程序,并包括自动设置和处理.pem文件和证书以及超级丰富的function集。

lpender:meteor-pushwoosh是我写的一个包,

  • 允许您的应用创build并接收推送通知。
  • 允许在创build通知时由用户查询。
  • 适用于iOs和Android设备。

请记住,从他们的定价页面不完全清楚,但在免费试用后,每月49美元继续使用他们的API以编程方式从您的应用程序生成消息。

如果你只关心iOS通知,那么alanning提到的apn包可能会做这个工作。

meteor然而有一个包, raix:push ,它使用起来非常容易,并支持APN iOS,GCM Android和部分其他系统(APN Safari web,GCM Chrome OS,Firefox OS)上的通知。