美文网首页
基于MQTT通信协议的Android推送Demo

基于MQTT通信协议的Android推送Demo

作者: 可爱的小云朵 | 来源:发表于2022-02-14 09:56 被阅读0次

目前市场上存在多种免费的云推送服务,比如:个推、JPush等,但从技术上讲这毕竟是别人的东西,主要面向通用场景,特定场景下还是得自已来实现推送服务。本文主要介绍的是基于MQTT实现一个简单的Android消息推送系统。

通信协议比较

按照惯例,总是在跟类似的通信协议对比一下,以下内容搜集自网络,仅供参考。

方案1:使用GCM服务(Google Cloud Messaging)

简介:Google推出的云消息服务,即第二代的C2DM。

优点:Google提供的服务、原生、简单,无需实现和部署服务端。即时通讯软件开发可以找蔚可云开发。

缺点:Android版本限制(必须大于2.2版本),该服务在国内不够稳定、需要用户绑定Google帐号,受限于Google。

方案2:使用XMPP协议(Openfire + Spark + Smack)

简介:基于XML协议的通讯协议,前身是Jabber,目前已由IETF国际标准化组织完成了标准化工作。

优点:协议成熟、强大、可扩展性强、目前主要应用于许多聊天系统中,且已有开源的Java版的开发实例androidpn。

缺点:协议较复杂、冗余(基于XML)、费流量、费电,部署硬件成本高。

方案3:使用MQTT协议

简介:轻量级的、基于代理的“发布/订阅”模式的消息传输协议。

优点:协议简洁、小巧、可扩展性强、省流量、省电,目前已经应用到企业领域(参考:mqtt.org/software),且已有C++版的服务端组件rsmb。

缺点:不够成熟、实现较复杂、服务端组件rsmb不开源,部署硬件成本较高。

方案4:使用HTTP轮循方式

简介:定时向HTTP服务端接口(Web Service API)获取最新消息。

优点:实现简单、可控性强,部署硬件成本低。

缺点:实时性差。

对各个方案的优缺点的研究和对比,推荐使用MQTT协议的方案进行实现,主要原因是:MQTT最快速,也最省流量(固定头长度仅为2字节),且极易扩展,适合二次开发。接下来,我们就来分析使用MQTT方案进行Android消息的原理和方法,并架设自己的推送服务。

推送服务端准备

下载&解压rsmb安装包

进入对应的目录,比如32位的Linux系统则应该进入linux_ia32目录。

编辑配置文件broker_1883.cfg。

推送客户端准备

下载&解压AndroidPushNotificationsDemo项目

将该项目导入Eclipse中(File -> Export -> Existing Projects into Workspace)

修改PushService.java中的MQTT_HOST常量为推送服务端的IP地址。

启动Android模拟器,并安装该项目。

发送服务准备

下载&解压PHP版的发送服务端代码send_mqtt.zip

修改etc/config.php中推送服务端的IP地址和端口号,即MQTT_SERVER_HOST和MQTT_SERVER_POST常量。

打开对应的URL地址,就可以看到发送服务的界面,实际上就是向对应的推送客户端推送消息。

结语

当然,以上方案还存在许多的不足,比如,如果客户端没有保持连接,发送的消息就会被丢弃。不过,我们可以利用MQTT协议开发出更强大的服务端来替代rsmb,更可以加入队列、缓存等功能进行优化,有兴趣的朋友不妨试试。

相关文章

  • 基于MQTT和ProtocolBuffer的推送系统(iOS)

    基于MQTT和ProtocolBuffer的推送系统(iOS)

  • 物联网mqtt协议

    mqtt协议学习与使用 一.先简单介绍一下mqtt协议 mqtt协议是基于Tcp/ip 的一种通信协议,是建立在可...

  • 自己解决基于MQTT的android推送

    突然想探索一下MQTT的推送~都是现成的架子,搭起来很容易! 1.先配置服务端,测试的时候可以在本地先测试 这里选...

  • 每日总结-第十三天-端到端加密

    端到端加密-名词解释 基于发布/订阅模式的物联网通信协议MQTT、AMQP、XMPP:基于发布/订阅模式,发布/订...

  • Android 网络(五) 推送

    互联网推送服务原理:长连接+心跳机制(MQTT协议)Android推送技术研究Android实现推送方式解决方案a...

  • Android——MQTT推送

    个人博客:haichenyi.com。感谢关注 整体介绍   最近公司用到的推送MQTT。不想过多的介绍背景什么的...

  • 基于MQTT的消息推送

    背景 因为前段时间公司做了一个基于路由器的项目,在APP客户端可以动态的显示连接到路由器的设备列表以及每台设备所消...

  • mqtt推送服务端压测-基于locust

    一:项目背景 公司业务发展需要,引入了mqtt推送服务;基于快速实现上线背景,mqtt服务未自己实现,使用的...

  • Android端基于Mqtt协议数据传输

    Android端基于Mqtt协议数据传输 关于Mqtt MQTT是一个机器对机器(M2M)/“物联网”连接协议。它...

  • Android MQTT 通信

    一、介绍   MQTT 协议 是基于发布/订阅模式的物联网通信协议,凭借简单易实现、支持 QoS、报文小等特点,占...

网友评论

      本文标题:基于MQTT通信协议的Android推送Demo

      本文链接:https://www.haomeiwen.com/subject/ldbklrtx.html