- 1
- 0
- 约4.5千字
- 约 9页
- 2020-12-23 发布于浙江
- 举报
在开发 Android 和 iPhone 应用程序时,我们往往需要从服务器不定的向手机客户端即时
推送各种通知消息, iPhone 上已经有了比较简单的和完美的推送通知解决方案,可是
Android 平台上实现起来却相对比较麻烦,最近利用几天的时间对 Android 的推送通知服
务进行初步的研究。
在 Android 手机平台上, Google 提供了 C2DM (Cloudto Device Messaging )服务,
起初我就是准备采用这个服务来实现自己手机上的推送功能。
Android Cloud to Device Messaging (C2DM) 是一个用来帮助开发者从服务器向
Android 应用程序发送数据的服务。该服务提供了一个简单的、轻量级的机制,允许服务
器可以通知移动应用程序直接与服务器进行通信, 以便于从服务器获取应用程序更新和用户
数据。 C2DM 服务负责处理诸如消息排队等事务并向运行于目标设备上的应用程序分发这
些消息。
但是经过一番研究发现,这个服务存在很大的问题:
1 )C2DM 内置于 Android 的 2.2 系统上,无法兼容老的 1.6 到 2.1 系统 ;
2 )C2DM 需要依赖于 Google 官方提供的 C2DM 服务器,由于国内的网络环境,这个服
务经常不可用,如果想要很好的使用,我们的 App Server 必须也在国外,这个恐怕不是每
个开发者都能够实现的 ;
有了上述两个使用上的制约, 导致我最终放弃了这个方案, 不过我想利用另外一篇文章来详
细的介绍 C2DM 的框架以及客户端和 App Server 的相应设置方法,可以作为学习与参考
之用。
即然 C2DM 无法满足我们的要求, 那么我们就需要自己来实现 Android 手机客户端与 App
Server 之间的通信协议,保证在 App Server 想向指定的 Android 设备发送消息时,
Android 设备能够及时的收到。下面我来介绍几种常见的方案:
1 )轮询:应用程序应当阶段性的与服务器进行连接并查询是否有新的消息到达,你必须自
己实现与服务器之间的通信, 例如消息排队等。 而且你还要考虑轮询的频率, 如果太慢可能
导致某些消息的延迟,如果太快,则会大量消耗网络带宽和电池。
2 )SMS :在 Android 平台上,你可以通过拦截 SMS 消息并且解析消息内容来了解服务器
的意图。这是一个不错的想法, 我就见过采用这个方案的应用程序。这个方案的好处是,可
以实现完全的实时操作。 但是问题是这个方案的成本相对比较高, 你很难找到免费的短消息
发送网关,关于这个方案的实现,可以参考如下链接:
/apis/mobile-java-push/ 。
3 )持久连接: 这个方案可以解决由轮询带来的性能问题, 但是还是会消耗手机的电池。 Apple
的推送服务之所以工作的很好, 是因为每一台手机仅仅保持一个与服务器之间的连接, 事实
上 C2DM 也是这么工作的。不过这个方案也存在不足,就是我们很难在手机上实现一个可
靠的服务。 Android 操作系统允许在低内存情况下杀死系统服务,所以你的通知服务很可
能被操作系统 Kill 掉了。
前两个方案存在明显的不足,第三个方案也有不足,不过我们可以通过良好的设计来弥补,
以便于让该方案可以有效的工作。毕竟,我们要知道 GMail ,GTalk 以及 GoogleVoice 都
可以实现实时更新的。
? 采用 MQTT 协议实现 Android 推送
MQTT 是一个轻量级的消息发布 / 订阅协议,它是实现基于手机客户端的消息推送服务器的
理想解决方案。
我们可以从 这里 下载该项目的实例代码,
您可能关注的文档
最近下载
- 2025年军考提干题目及答案.doc VIP
- 桥门式起重机检验规程.doc
- 文字汉字结构汉字结构现代汉语教案.docx VIP
- 全口义齿特殊颌型.pdf VIP
- 学堂在线 雨课堂 学堂云 研究生的压力应对与健康心理 期末考试答案.docx VIP
- 学堂在线 雨课堂 学堂云 研究生的压力应对与健康心理 章节测试答案.docx VIP
- 在线网课学习课堂《现代农业创新与乡村振兴战略(扬州)》单元测试考核答案.docx VIP
- 学堂在线 雨课堂 学堂云 艺术的启示 章节测试答案.docx VIP
- 2026年中考语文一轮专题复习:现代文阅读.docx VIP
- 计算机基础知识试题(答案_).docx VIP
原创力文档

文档评论(0)