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

    你可能感兴趣的文章
    nio 中channel和buffer的基本使用
    查看>>
    NISP一级,NISP二级报考说明,零基础入门到精通,收藏这篇就够了
    查看>>
    NI笔试——大数加法
    查看>>
    NLP 基于kashgari和BERT实现中文命名实体识别(NER)
    查看>>
    Nmap扫描教程之Nmap基础知识
    查看>>
    Nmap端口扫描工具Windows安装和命令大全(非常详细)零基础入门到精通,收藏这篇就够了
    查看>>
    NMAP网络扫描工具的安装与使用
    查看>>
    NN&DL4.1 Deep L-layer neural network简介
    查看>>
    NN&DL4.3 Getting your matrix dimensions right
    查看>>
    NN&DL4.8 What does this have to do with the brain?
    查看>>
    No 'Access-Control-Allow-Origin' header is present on the requested resource.
    查看>>
    No Datastore Session bound to thread, and configuration does not allow creation of non-transactional
    查看>>
    No fallbackFactory instance of type class com.ruoyi---SpringCloud Alibaba_若依微服务框架改造---工作笔记005
    查看>>
    No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalanc
    查看>>
    No module named cv2
    查看>>
    No module named tensorboard.main在安装tensorboardX的时候遇到的问题
    查看>>
    No module named ‘MySQLdb‘错误解决No module named ‘MySQLdb‘错误解决
    查看>>
    No new migrations found. Your system is up-to-date.
    查看>>
    No qualifying bean of type XXX found for dependency XXX.
    查看>>
    No resource identifier found for attribute 'srcCompat' in package的解决办法
    查看>>