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

时间:2014-03-23 22:33:01

标签: node.js meteor apple-push-notifications

我未能找到从Meteor应用程序发送推送通知的综合教程。我知道Meteor使用node.js运行,所以我一直在关注这个高度引用和推荐的教程https://blog.engineyard.com/2013/developing-ios-push-notifications-nodejs,但无济于事;在部署我的应用程序时,它上传但网站没有响应(并且鉴于部署没有错误,我无法看到问题所在,尽管我认为它与我如何组织文件有关)。

我已根据教程的说明正确下载并加载了所有证书。我已经使用他们的示例应用程序来正确获取我的测试设备的ID。在Meteor的文件夹配置中,我无法确定在哪里正确放置其他文件和依赖项。它应该如何与教程中的结构不同(换句话说,这个结构应该放在我的应用程序的.meteor文件夹中的文件夹内)?

我认为最重要的问题是Meteor只是简单地构建他们的应用程序而不是普通的Node.js应用程序,因此我需要将这些证书和依赖项放在特定的文件夹中,而不仅仅是{{1的主应用程序文件夹}},application.htmlapplication.js

3 个答案:

答案 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,您必须:

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

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

raix:push"解决"第一个问题,允许将推送通知传递给用户或用户组。但是:

  • 它不再维护。
  • 它(根据我的经验)不再工作了。 iOs通知显示但他们不会振动手机或发出任何声音。有些人提议用它来解决它,但它们都不适合我。
  • 它会要求您对生产密码和.pem文件进行版本控制,这对于正确的12因素应用程序来说当然不被视为安全做法。

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

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

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

请注意,从pricing页面开始并不完全清楚,但在免费试用后,每月只需49美元即可继续使用其API以编程方式从您的应用生成消息

答案 2 :(得分:2)

如果你只关心iOS通知,那么alanning提到的apn包可能会起作用。

然而,Meteor有一个包raix:push,它更易于使用,并支持APN iOS,GCM Android和部分其他系统(APN Safari网站,GCM Chrome OS, Firefox OS)。