【问题标题】:Push Notifications in Android PlatformAndroid 平台中的推送通知
【发布时间】:2009-09-04 11:25:06
【问题描述】:

我希望编写一个从服务器接收推送警报的应用程序。我找到了几种方法来做到这一点。

  1. SMS - 拦截传入的 SMS 并从服务器发起拉取
  2. 定期轮询服务器

每个都有自己的局限性。短信 - 不保证到达时间。投票可能会耗尽电池电量。

请问您有更好的建议吗?非常感谢。

【问题讨论】:

标签: android push alerts


【解决方案1】:

Google 的官方回答是 Android Cloud to Device Messaging Framework(已弃用) Google Cloud Messaging(已弃用) Firebase Cloud Messaging

它将在 Android >= 2.2 上运行(在具有 Play 商店的手机上)。

【讨论】:

  • 它现在处于测试阶段,但您可以注册以希望被激活。
  • 你通常可以很快被激活,它被用于像 GMail 这样的东西,所以知道在生产中工作。不幸的是,他们缺少与 C2DM 的服务器端通信的示例代码。我在这里写了一个关于这方面的教程blog.boxedice.com/2010/10/07/…
  • 问题是您的用户需要一个 Google 帐户:我认为这是一个约束。
  • 请注意,Android Cloud 到设备消息传递框架已被弃用。新框架称为 Google Cloud Messaging,可在此处找到:developer.android.com/guide/google/gcm/index.html
  • 2018 年 4 月 10 日,Google 弃用了 GCM。 GCM 服务器和客户端 API 已于 2019 年 5 月 29 日移除。将 GCM 应用迁移到 Firebase Cloud Messaging (FCM),它继承了可靠且可扩展的 GCM 基础架构以及许多新功能。请参阅迁移指南了解更多信息。
【解决方案2】:

从我给出的类似问题的答案中交叉发布 - Does Android support near real time push notification?

我最近开始使用适用于 Android 的 MQTT http://mqtt.org 作为做这类事情的一种方式(即不是短信而是数据驱动的推送通知,几乎是即时消息传递,而不是轮询等)

我有一篇关于此的背景信息的博客文章,以防它有帮助

http://dalelane.co.uk/blog/?p=938

(注意:MQTT 是 IBM 技术,我应该指出我为 IBM 工作。)

【讨论】:

  • 嗨 Dale,我阅读了您关于 MQTT 的博客文章,它似乎完全符合手机上几乎即时通知的要求。但我还没有找到任何关于它实际上是如何做到的信息。它是否始终保持套接字打开?如果它的 IP 地址发生了变化,它如何通知服务器?如果您能对此有所了解,将不胜感激。干杯纳伦
  • 它确实保持连接打开。在后续帖子 (dalelane.co.uk/blog/?p=1009) 中,我确实更多地讨论了保持连接打开的含义 - 你看到了吗?如果连接断开,可以通知服务器和客户端。然后由应用层决定如何响应(例如重新连接)。帖子中提到的文档中有更多信息(例如,该页面上的 IA92 : www-01.ibm.com/support/docview.wss?rs=171&uid=swg24006006 pdf,以及该页面上 zip 中的 Javadoc)
【解决方案3】:

我对 Android 推送通知的理解/经验是:

  1. C2DM GCM - 如果您的目标 android 平台是 2.2+,那就去吧。需要注意的是,设备用户必须始终使用 Google 帐户登录才能获取消息。

  2. MQTT - 基于 Pub/Sub 的方法,需要设备主动连接,如果实施不当可能会耗尽电池电量。

  3. Deacon - 由于社区支持有限,从长远来看可能并不好。

编辑:添加于 2013 年 11 月 25 日

GCM - 谷歌说...

对于 3.0 之前的设备,这要求用户在其移动设备上设置其 Google 帐户。运行 Android 4.0.4 或更高版本的设备不需要 Google 帐户。*

猜你喜欢
  • 1970-01-01
  • 2015-11-19
  • 1970-01-01
  • 2016-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多