飞哥语录:编程说白了就是发送数据,接收数据,处理数据。

1.概述

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议。

2.特点

MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:
1、使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;
2、对负载内容屏蔽的消息传输;
3、使用 TCP/IP 提供网络连接;
4、有三种消息发布服务质量:

  • “至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传 感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
  • “至少一次”,确保消息到达,但消息重复可能会发生。
  • “只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。

5、小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量;
6、使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制;

3.MQTT服务器搭建

要想实现消息推送功能,就先必须要搭建自己的推送服务器了

这里以Apollo的1.71版本为例,大家可以从Apollo官网根据自己操作系统的版本下载对应最新的服务器软件,下载完成后并将其解压

第一步:打开cmd命令行窗口,然后cd到解压路径的bin目录下,输入apollo create mqttbroker(这个名字可以任取)然后回车,这个步骤是创建我们自己的mqtt服务器,创建完成后在我们的bin目录下会多出mqttbroker一个文件夹,里面包含所有的我们服务器的配置信息;

第二步:进入到mqttbroker的mymqttbroker\etc路径下,将我们自己的tcp链接地址配置到apollo.xml文件中;

第三步:在命令行窗口cd 到mqttbroker的mymqttbroker\bin路径下,输入apollo-broker run开启服务,想要确定我们的服务是不是开启成功,只需要在浏览器中输入http://127.0.0.1:61680/ or https://127.0.0.1:61681/,初始密码为admin/password,进入成功,则服务开启成功;

4.Android 客户端编程

首先给大家介绍几个概念:

  • topic:中文意思是“话题”。在MQTT中订阅了(subscribe)同一话题(topic)的客户端会同时收到消息推送。直接实现了“群聊”功能;
  • clientId:客户身份唯一标识;
  • qos:服务质量;
  • retained:要保留最后的断开连接信息;
  • MqttAndroidClient#subscribe():订阅某个话题;
  • MqttAndroidClient#publish(): 向某个话题发送消息,之后服务器会推送给所有订阅了此话题的客户;
  • userName:连接到MQTT服务器的用户名;
  • passWord :连接到MQTT服务器的密码;

4.1添加权限

<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />

4.2发布、订阅消息详情请参考代码

5.相关API

Class MqttAndroidClient

6.Jar & 源码下载

1.Github传送门
2.jar包下载

声明:
1.文中部分资料来自百度百科;
2.本文参考学习了一下博主的优秀博客,我在这里深表感谢;

http://blog.sina.com.cn/s/blog_14d17b8ab0102wi7g.html

http://blog.csdn.net/djun100/article/details/25752491

http://blog.csdn.net/flyingsnow2211/article/details/48622981

http://www.itnose.net/detail/6652162.html

Android MQTT实现消息推送相关推荐

  1. Android中的消息推送

    转载于Android中的消息推送 前段时间做了一个应用,需要用到服务器端向Android或者是Iphone终端主动发送命令.随后客户端做出相应的反应.当时没有找到最佳的方案,一直搁置着.今天看到网上有 ...

  2. 浅谈iOS和Android后台实时消息推送的原理和区别

    http://www.52im.net/thread-286-1-1.html 前言 iOS和Android上的实时消息推送差异很大,往小了说是技术实现的差异,往大了说是系统实现理念的不同.实时消息推 ...

  3. Activemq MQTT 简单消息推送示例

    Activemq MQTT 简单消息推送示例 简介     简单使用 MQTT 连接 Activemq 进行消息推送的示例代码 编写详情 环境准备     使用docker启动Activemq,查看M ...

  4. android 消息推送方法,一种基于Android系统的消息推送方法技术方案

    [技术实现步骤摘要] 本专利技术涉及一种基于Android系统的消息推送方法,属于计算机 技术介绍 推送功能在手机应用开发中越来越重要,已经成为手机开发的必选项.消息推送,就是在互联网上通过定期传送用 ...

  5. android开发之消息推送

    本人想把Android所要运用到的所有的东西都好好的梳理一遍,那今个儿就和大伙说说消息推送:想必大家都玩过小米手机,细心的人会发现,小米手机时不时的就会发一些通知告诉你要系统升级了.某某App有新版本 ...

  6. android系统下消息推送机制

    一.推送方式简介: 当前随着移动互联网的不断加速,消息推送的功能越来越普遍,不仅仅是应用在邮件推送上了,更多的体现在手机的APP上.当我们开发需要和服务器交互的应用程序时,基本上都需要获取服务器端的数 ...

  7. Flutter在Android平台实现消息推送

    1. 极光推送平台申请应用 1. 注册极光推送平台: 极光官方平台 2. 极光推送平台创建应用: 填写应用程序名称. 选择平台,选择服务,点击下一步. 需要输入应用包名(Android平台),选择渠道 ...

  8. Android接入极光消息推送

    极光消息推送: 极光推送(JPush)是一个端到端的推送服务,使得服务器端消息能够及时地推送到终端用户手机上,让开发者积极地保持与用户的连接 主要功能 保持与服务器的长连接,以便消息能够即时推送到达客 ...

  9. Android友盟消息推送

    1. 申请应用消息推送账号 集成SDK之前, 请在 http://message.umeng.com 创建应用,获取应用对应的AppKey和Umeng Message Secret.并将自己服务器ip ...

最新文章

  1. 网站推广专员浅析如何做好网站推广与运营?
  2. python有哪些作用-python描述符有什么作用
  3. XMind2020的一些使用小技巧
  4. HTML5与HTML4的区别
  5. 汇编语言的相对跳转和绝对跳转以及反汇编代码解析
  6. maven项目中整合grunt构建工具(二)-js合并、压缩技术
  7. 剑指Offer的学习笔记(C#篇)-- 用两个栈实现队列
  8. 车牌识别及验证码识别的一般思路
  9. HashTable、HashSet和Dictionary的区别
  10. mysql数据库关联查询慢_mysql数据库多表关联查询的慢SQL优化
  11. 英雄联盟游戏语音无法连接服务器,英雄联盟语音连不上是电脑哪里出问题了
  12. oracle彻底删除dbf文件,ORACLE 删除数据文件模拟灾难恢复
  13. OneHotEncoder简单用法
  14. 【软件】Excel文件双击打开巨慢,先开excel程序,将表格拖进来就很快,夜神模拟器导致开excel很慢
  15. Windows下C++调用系统软键盘及其需要注意的点
  16. CPU天梯图2022
  17. Android Beacon 开发(IBeacon)
  18. mit 6.824 lab1A解析
  19. 动态规划之01背包问题详解
  20. 怎么打开avi文件文件损坏_什么是AVI文件(以及如何打开一个文件)?

热门文章

  1. AI绘图、模型切换、角色场景切换,龙坤AI助手全方位提升你的写作体验!
  2. 【音频驱动】Linux之ALSA声卡、WAV文件相关概念
  3. 荣耀手环5篮球版的使用方法
  4. Gause算法c语言实现,Gause是什么意思
  5. KTV「消亡史」:辉煌、挫折与新生
  6. 水果乐园java 闯关游戏免费下载_水果乐园游戏下载-水果乐园游戏安卓版 v1.0_手机乐园...
  7. 80老翁谈人生(6):一生追梦的历程
  8. 怎么写app推广软文,有什么好的APP营销策划方案吗?
  9. Android版本铎A梦幻连连看游戏源代码完整版
  10. 读书笔记002:托尼.巴赞之快速阅读