博客
关于我
Android实现推送方式解决方案
阅读量:190 次
发布时间:2019-02-26

本文共 1320 字,大约阅读时间需要 4 分钟。

Android推送功能实现方案探讨

在移动互联网时代,推送功能已经成为手机应用程序中不可或缺的一部分。从新闻客户端实时推送最新消息,到即时通讯应用的消息提醒,推送功能为用户提供了便捷的信息获取方式。然而,随着推送服务的普及,也带来了诸多挑战。本文将探讨Android平台中实现推送功能的基础知识及多种解决方案。

推送方式基础知识

在移动互联网的早期,手机用户如果希望获取通知或新信息,通常需要手动打开应用程序或等待提醒。随着技术的进步,推送功能逐渐成为移动应用的核心特性。推送功能最初在Email中应用,用于通知新邮件到来,但随着移动互联网的发展,推送功能逐渐普及到各类移动应用中。

在开发需要与服务器交互的应用时,获取服务器端数据的方式主要有两种:Pull(拉)和Push(推送)。Pull方式通过定期连接服务器,获取最新数据,虽然简单,但效率较低,容易占用大量网络流量和电池资源。相比之下,Push方式实现了实时通知,显著提升了用户体验。

常见推送解决方案

  • 轮询(Pull)方式

    轮询方式通过定期连接服务器,主动获取最新数据。优点是实现简单,缺点是对网络和电池资源的高消耗,且可能导致消息延迟。

  • 短信(SMS)推送

    Android平台支持拦截短信并解析内容,用于推送通知。该方式实现实时操作,但需向移动公司缴纳费用,且免费服务难以获取。

  • 持久连接(Push)方式

    通过保持与服务器的长期连接,实时接收消息。这种方式优于轮询,但在Android中存在诸多限制,如系统可能随时Kill推送服务,影响稳定性。

  • C2DM推送方案

    Google提供的C2DM(Cloud to Device Messaging)服务曾被尝试,但存在多个限制:

    • 兼容性问题,仅适用于Android 2.2及以上版本。
    • 依赖Google服务器,国内环境下使用不便。
    • 在部分国产手机中可能无法运行。

    因此,最终放弃C2DM,选择自行开发通信协议。

    MQTT协议推送方案

    MQTT协议是一种轻量级的消息发布/订阅协议,适合实现基于客户端的推送服务。通过wmqtt.jar库和RSMB代理,构建推送架构。该方案适合对协议有一定了解的开发者,需自行搭建服务器和配置客户端。

    XMPP协议推送方案

    基于XMPP协议的AndroidPN开源项目提供了完整的推送解决方案。其优势在于无需依赖Google服务,且协议扩展性强。项目包括客户端和服务器端,服务器基于Openfire修改开发,支持消息推送和用户认证。

    第三方平台推送方案

    使用第三方平台如极光推送(目前免费),可以快速实现推送功能。国内推送平台如云巴(由极光推送的创始人开发)也值得关注。第三方平台需依赖其服务器,需注意数据隐私和服务稳定性。

    搭建自有推送平台

    搭建自有推送平台需要开发消息代理服务器,支持消息接收和转发。虽然工作量大,但提供高度定制化,适合有特定需求的场景。

    总结

    在选择Android推送方案时,需综合考虑成本、依赖性、维护难度和扩展性。无论是利用现有开源项目、第三方服务,还是自行搭建平台,都有各自的优劣 trades-off。开发者应根据项目需求,选择最适合的方案,确保推送服务的稳定性和可靠性。

    转载地址:http://dpyu.baihongyu.com/

    你可能感兴趣的文章
    python3.6入门到高阶(全栈) day027 网络通信协议 osi七层模型
    查看>>
    Python3.6属性错误:模块‘;异步没有属性‘;运行‘;
    查看>>
    python3.6版本中的python-weka-wrapper安装失败,错误代码为%1
    查看>>
    Python3.7安装cv2踩过的坑
    查看>>
    python写txt文件
    查看>>
    python关于sorted排序函数详细解析 附实战代码(全)
    查看>>
    python3.8调用m文件,调用matlab
    查看>>
    python3.9新特性_Python 3.9 新特性速览
    查看>>
    Python3.x:遍历select下拉框获取value值
    查看>>
    python360百科_11月编程排行榜:Python超过Java成第二
    查看>>
    Python关于Paginator分页函数详细解析 附实战代码
    查看>>
    python3、ipython3、setup-tools、pip等环境搭建详细总结
    查看>>
    python3下使用cv2.imwrite存储带有中文路径图片或者绝对路径图片
    查看>>
    python3与django中@property详解
    查看>>
    python3中如何表示无穷大
    查看>>
    Python3中提示:no module named 'wxpy'
    查看>>