如何采用MQTT协议实现android消息推送

操作方法

  • 01

    MQTT协议实现android消息推送,我想每个Android开发人员对它应该都是比较熟悉的。    MQ 遥测传输 (MQTT) 是轻量级基于代理的发布/订阅的消息传输协议,设计思想是开放、简单、轻量、易于实现。这些特点使它适用于受限环境。例如,但不仅限于此:网络代价昂贵,带宽低、不可靠。在嵌入设备中运行,处理器和内存资源有限。该协议的特点有:使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。对负载内容屏蔽的消息传输。 使用 TCP/IP 提供网络连接。有三种消息发布服务质量:“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。“至少一次”,确保消息到达,但消息重复可能会发生。“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制MQTT最简单的使用包括两种,一种是发消息,一种是订阅消息。 发消息就是向一个固定IP地址的某个主题发送消息(publish)订阅消息是向服务器端订阅某些主题,当其他客户端向服务器的这个主题广播消息时,那么所有订阅这个主题的客户端就都能收到了MQTT是一项消息传递技术,由IBM再2001年发布。总结一下,机制就是使用一个代理服务器message broker,客户端client连接上这个服务器,然后告诉服务器说,我可以接收哪些类型的消息,同时,client也可以发布自己的消息,这些消息根据协议的内容,可以被其他client获取。只要手机客户端,连上服务器,然后就可以接收和发布消息了,不用自己写socket什么了,低带宽,低耗电量,代码量也少,很简单吧。 package com.pig.test.mqtt;002  003 import com.ibm.mqtt.MqttClient;004 import com.ibm.mqtt.MqttException;005 import com.ibm.mqtt.MqttSimpleCallback;006  007 public class SubscribeClient {008  private final static String CONNECTION_STRING = "tcp://192.168.1.60:1883";009  private final static boolean CLEAN_START = true;010  private final static short KEEP_ALIVE = 30;//低耗网络,但是又需要及时获取数据,心跳30s011  private final static String CLIENT_ID = "client1";012  private final static String[] TOPICS = {013   "Test/TestTopics/Topic1",014   "Test/TestTopics/Topic2",015   "Test/TestTopics/Topic3",016   "tokudu/client1"017  };018  private final static int[] QOS_VALUES = {0, 0, 2, 0};019   020  //////////////////021  private MqttClient mqttClient = null;022   023  public SubscribeClient(String i){024   try {025    mqttClient = new MqttClient(CONNECTION_STRING);026    SimpleCallbackHandler simpleCallbackHandler = new SimpleCallbackHandler();027    mqttClient.registerSimpleHandler(simpleCallbackHandler);//注册接收消息方法028    mqttClient.connect(CLIENT_ID+i, CLEAN_START, KEEP_ALIVE);029    mqttClient.subscribe(TOPICS, QOS_VALUES);//订阅接主题030     031    /**032     * 完成订阅后,可以增加心跳,保持网络通畅,也可以发布自己的消息033     */034  035    mqttClient.publish(PUBLISH_TOPICS, "keepalive".getBytes(), QOS_VALUES[0], true);036     037   } catch (MqttException e) {038    // TODO Auto-generated catch block039    e.printStackTrace();040   }041  }042  043  /**044   * 简单回调函数,处理client接收到的主题消息045   * @author pig046   *047   */048  class SimpleCallbackHandler implements MqttSimpleCallback{ 049  050   /**051 * 当客户机和broker意外断开时触发052    * 可以再此处理重新订阅053    */054   @Override055   public void connectionLost() throws Exception {056    // TODO Auto-generated method stub057    System.out.println("客户机和broker已经断开");058   }059  060   /**061 * 客户端订阅消息后,该方法负责回调接收处理消息062 */063   @Override064   public void publishArrived(String topicName, byte[] payload, int Qos, booleanretained) throws Exception {065    // TODO Auto-generated method stub066    System.out.println("订阅主题: " + topicName);067    System.out.println("消息数据: " + new String(payload));068    System.out.println("消息级别(0,1,2): " + Qos);069    System.out.println("是否是实时发送的消息(false=实时,true=服务器上保留的最后消息): " + retained);070   }071    072  }073   074  /**075 * 高级回调076 * @author pig077 *078   */079  class AdvancedCallbackHandler implements MqttSimpleCallback{080  081   @Override082   public void connectionLost() throws Exception {083    // TODO Auto-generated method stub084     085   }086  087   @Override088   public void publishArrived(String arg0, byte[] arg1, int arg2,089     boolean arg3) throws Exception {090    // TODO Auto-generated method stub091     092   }093    094  }095   096  /**097 * @param args098   */099  public static void main(String[] args) {100   // TODO Auto-generated method stub101    new SubscribeClient("" + i);102  103  }104  105 }

(0)

相关推荐

  • 为什么安卓的消息推送没有苹果好用?

    最近有小朋友问我:"缺姐姐,缺姐姐,为什么我从苹果手机换成安卓手机后收到消息经常延迟,甚至收不到呢?太误事了."其实这是ios系统和Android系统推送机制不同导致的,那我就简单 ...

  • 咪咕音乐怎么把消息推送关闭?

    听着音乐总是能收到那些垃圾信息,好烦燥的说,还能不能好好的听听音乐呢?别急,下面的小编就来教大家咪咕音乐怎么把消息推送关闭的方法,希望可以帮到大家。 1)首先先打开咪咕音乐,进去之后点击右上角的【三点 ...

  • 微店买家版怎么把消息推送关闭?

    每次一上微店买家版就可以收到一堆的降价促销活动,看着有点烦,能不能关闭掉呢?下面的小编就来教大家微店买家版关闭消息推送的方法,希望可以帮到大家。 1)首先先打开微店买家版,进去之后点击【我的】,接着点 ...

  • 去掉WPS 2009 右上角消息推送条

    WPS2009是一款非常不错的办公软件,尤其是个人版的免费开放,更是圆了人们的软件正版化的梦想,从此不再受版权困扰。 由于WPS个人版是一款免费办公软件,所以在软件中适当添加些网站宣传大家都是可以理解 ...

  • 如何去掉WPS 2009右上角消息推送条

    由于WPS个人版是一款免费办公软件,所以在软件中适当添加些网站宣传大家都是可以理解的,只是有时由于WPS推送的消息内容较长,造成与菜单栏及按钮紧密接触(如图01),有时在文档操作中误点后,会自动打开浏 ...

  • 百度地图关闭消息推送

    点击自己的账号头像→设置→消息推送

  • UC浏览器怎么关闭消息推送

    UC浏览器怎么关闭消息推送?不少人使用UC浏览器是为了查看网页方便.而在使用过程中,不少人发现,它默认是有不少消息推送的,非常烦人,那要怎么关闭这些消息推送呢?项目,一起来看看小编为大家带来的UC浏览 ...

  • 如何在Safari上禁用消息推送弹窗

    在使用 Safari 浏览一些主流网站的时候,通常会出现一个询问你是否接受消息推送的弹窗.虽然我们可以选择拒绝,然后再继续往下浏览,但是总是重复同样的操作是一件非常麻烦的事情. 今天,我们来说一说如何 ...

  • 苹果手机怎么开启抖音推送消息?抖音消息推送开启方法

    我们在使用抖音短视频时,经常会遇到无法接收到推送消息的情况,今天就来说说苹果抖音短视频如何开启接收推送通知 抖音消息推送开启方法 首先我们需要进入抖音短视频的首页,然后我们选择右下角的[我] 此时我们 ...