push-notification - 安卓是否支持近实时方式push通知?

  显示原文与译文双语对照的内容

我最近了解到,iPhone应用几乎可以即时接收到 通知应用到应用程序通知应用到应用程序

这是推送通知的形式,提供一个定制的协议使得iphone的总是在数据连接和消息应用程序二进制包,即会弹出警报居然很快, 0.5 - 5秒从服务器应用程序发送到手机应用程序响应时间。 这是作为数据而不是短信发送的- - 以非常小的数据包作为数据计划的一部分,而不是作为传入消息。

我想知道,如果使用 Android,有一个类似的工具,或者是否可以用 Android api实现一些接近于这个的东西。 为了阐明,我定义了类似:

  • 不是短信,而是一些数据驱动的解决方案
  • 尽可能的实时
  • 是可以伸缩的,换句话说,作为一个移动应用的服务器部分,我可以在几秒钟内通知数千个应用实例

我很欣赏这个应用可以拉动,http请求/响应的风格,但是我不想被轮询理想严重只是检查通知,除了它就像滴排水数据计划。

时间:

在 2012年06月26日 中,Google Cloud消息传递是向在设备上运行的应用程序发送消息的首选方式。

以前的( 现在已经过时了),该服务被称为云,用于设备消息服务。

XMPP 是一个很好的解决方案。 我已经将它用于启用,实时,Android应用程序。 XMPP功能强大,可扩展性强,易于集成和使用。

有大量的免费xmpp服务器( 尽管出于礼貌,你不应该滥用它们) 还有开源服务器可以运行在一个自己的箱子。 OpenFire 是一个极好的选择。

你想要的图书馆不是打如上所述,它是 aSmack 。 注意,这是一个构建环境- 你必须构建库。

这是我对一个XMPP解决方案的电池寿命影响所做的计算:

Android客户端必须定期唤醒一个持久的TCP连接来向XMPP服务器发送心跳信号。
这显然在电力使用方面增加了成本。 下面提供了这个成本的估算值:

  • 使用 1400毫安电池( 在 Nexus 一个和 HTC Desire 中提供)
  • 连接到 3 G 网络的闲置设备,使用大约 5 mA
  • 每隔 5分钟唤醒,心跳和睡眠周期,需要3 秒完成并使用 300 mA
  • 因此,每小时电池使用的成本是:
    • 36秒 300 mA = 3毫安发送心跳
    • 空闲时3600秒 5 mA = 5 mAh
    • 4:95 + 3 = 7: 95mah组合
  • 1400mah电池持续大约 11.6天空闲和 7.3天当运行应用程序时,它代表了一种近似 37%减少电池寿命。
  • 然而,减少电池寿命 37%代表了绝对的最糟糕的情况在实践中很少考虑到设备完全闲置。

如果你能依赖于谷歌图书馆为你的目标市场,那么你可能想驮运( 在现有的用户名注册资源——拦截的消息,因为他们用broadcastreceiver进来) GTalk功能。

如果不是,我期待你不能,然后你到xmpp捆绑自己的版本。 这是一种痛苦,但如果将XMPP单独作为独立库进行绑定,可能会变得更加容易。

你也可以考虑 PubSubHubub,但我不知道它的网络用法。 我相信它是在XMPP之上构建的。

由于 GTalk 已经从SDK中消失,所以最好创建一个'标准'推送消息系统。 这样,只有一个服务必须运行,只需要打开一个额外的tcp连接。 应用程序应该使用 Intents 与这里服务通信,并且应该首先请求权限来发送和接收来自服务的通知。 服务应该通知用户一个新的应用程序想要发送和接收消息。 然后用户将授予或者拒绝权限,因此他仍处于控制状态。 然后应用程序将向服务注册一个 action + 类别,这样服务就知道如何传递推送的消息。

好主意还是不愿意?

...