推荐的实现推送通知的方法

我正在为Android和iPhone构建应用程序。 此应用需要接收用户收件箱中新邮件的通知。 作为app dev中的总菜鸟,我想知道你们中是否有人能够提出最好的方法来实现我需要的东西。

我在Android上阅读的内容比iPhone更多,所以我对后者的理解可能不足。 基于我已经阅读和理解的内容,我相信当我的应用程序第一次启动时,我需要启动服务(或者每次设备启动时指示设备启动服务)。 然后,此服务将与服务器连接以接收通知并显示它们。 单击通知将启动该应用程序。

我的选择是

  1. C2DM或APNS

  2. 城市飞艇

  3. 我自己的服务器主要使用与客户端的空闲TCP连接。

根据我选择的选项,我的客户端实现以及服务器端实现都会发生变化。

你们会推荐什么? 有没有其他方法可以做我需要做的事情?

任何帮助是极大的赞赏。

更新:

建立在jbat100上的答案。 Apple不允许我编写自己的服务器直接与我的应用程序通信以进行通知这一事实意味着必须使用APNS。 所以选项3完全没有了。 这意味着我们留下了Urban Airship或直接与APNS和C2DM接口。 根据我的研究,这两种情况所涉及的努力是可比较的,因此仅仅支持4-5K / mo额外支持通知是没有意义的。 因此,我计划实施选项1.如果您有任何其他想法,请在下面留下评论。

谢谢。

它们必须单独处理。 对于iOS推送通知,您必须通过Apple推送通知服务( 此处的编程指南),它们具有您的服务器必须符合的非常具体的协议,这在Apple推送通知服务的提供商通信中有所描述。 。 不了解Android,它可能会大不相同,集中度较低。

建立在jbat100上的答案。 Apple不允许我编写自己的服务器直接与我的应用程序通信以进行通知这一事实意味着必须使用APNS。 所以选项3完全没有了。 这意味着我们留下了Urban Airship或直接与APNS和C2DM接口。 根据我的研究,这两种情况所涉及的努力是可比较的,因此仅仅支持4-5K / mo额外支持通知是没有意义的。 因此,我计划实施选项1.如果您有任何其他想法,请在下面留下评论。

C2DM可能是最简单的。 但是,我想你也可以尝试Urban Ship。 实现自己的服务器是一件痛苦的事。

我的情况非常相似,我首先发布了我的Android应用程序,现在正在使用iOS应用程序。 对于Android,我使用C2DM实现了推送通知,我从我的Google App Engine(GAE)应用程序发送通知。 C2DM基本上需要向Google的服务器发送HTTP消息。 因此,您将HTTP POST发送到URL https://android.apis.google.com/c2dm/send

然而,iOS需要专用端口上的专用TCP连接,并且GAE环境不允许除了端口80上的HTTP之外的任何外部协议。所以,我已经研究了很多,而Urban Airship似乎就是答案。 它们提供了一个HTTP接口,我可以从我的GAE环境访问它,然后将它转换为Apple服务器理解的协议。 他们的定价似乎令人困惑 – 每月100万次免费通知,之后每通知十分之一。 这很奇怪,因为他们每月免费赠送1000美元? 非常经济奇怪。 我正在考虑尝试它们,但我认为最好的大批量替代方案是使用您自己的实现,并将其部署在亚马逊的AWS上或购买其他便宜的第三方托管。

重要提示:截至2012年6月26日,C2DM已正式弃用。这意味着C2DM已停止接受新用户和配额请求。 C2DM不会添加任何新function。 但是,使用C2DM的应用程序将继续运行。 鼓励现有C2DM开发人员迁移到新版本的C2DM,称为Google Cloud Messaging for Android(GCM)。 有关更多信息,请参阅C2DM-to-GCM迁移文档。 开发人员必须使用GCM进行新开发。

我不能透露Android方面的问题,但我可以告诉你,我最近在Heroku上设置了一个非常简单的Rails应用程序,它通过APNS向我的iOS应用程序发送推送通知。 我使用了休斯敦gem,并且在我开始努力的不到20分钟内就在我的iOS应用程序中接收推送通知。