博客
关于我
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/

    你可能感兴趣的文章
    Netty源码—7.ByteBuf原理四
    查看>>
    Netty源码—8.编解码原理二
    查看>>
    Netty源码解读
    查看>>
    Netty的Socket编程详解-搭建服务端与客户端并进行数据传输
    查看>>
    Netty相关
    查看>>
    Network Dissection:Quantifying Interpretability of Deep Visual Representations(深层视觉表征的量化解释)
    查看>>
    Network Sniffer and Connection Analyzer
    查看>>
    NetworkX系列教程(11)-graph和其他数据格式转换
    查看>>
    Networkx读取军械调查-ITN综合传输网络?/读取GML文件
    查看>>
    Net与Flex入门
    查看>>
    net包之IPConn
    查看>>
    NFinal学习笔记 02—NFinalBuild
    查看>>
    NFS共享文件系统搭建
    查看>>
    nfs复习
    查看>>
    NFS网络文件系统
    查看>>
    ng 指令的自定义、使用
    查看>>
    nginx + etcd 动态负载均衡实践(二)—— 组件安装
    查看>>
    nginx + etcd 动态负载均衡实践(四)—— 基于confd实现
    查看>>
    Nginx + Spring Boot 实现负载均衡
    查看>>
    Nginx + uWSGI + Flask + Vhost
    查看>>