帮助列表
帮助列表
Android PAHO 库使用

ANDROID MQTT库使用

  1.库使用方式,以及引入地址使用文档 http://www.eclipse.org/paho/clients/android/ 


   Android  Gradle 集成 https://github.com/eclipse/paho.mqtt.android

    

Gradle


repositories {
    maven {
        url "https://repo.eclipse.org/content/repositories/paho-releases/"
    }
}


dependencies {
    compile 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.0'
    compile 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.0'
}


  2.ANDROID 权限设置:

    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <service android:name="org.eclipse.paho.android.service.MqttService" >
    </service> 设置再<application></application>里面

      3.代码使用:

    初始化

    Context ctx;
    String clientId="自定义";//连接标示,同一个标示,用于2个连接,会踢掉对方。
    String userContext;//任意字符串,自定义。
    String addr = "tcp://mqttdms.aodianyun.com:1883";
    MqttCallback callback;
    MqttAndroidClient cli_ = new MqttAndroidClient(ctx,addr,clientId);
    MqttConnectOptions opt_ = new MqttConnectOptions();
    opt_.setCleanSession(true);//是否保持该clientid的session状态,以便断开后保存离线消息
    opt_.setConnectionTimeout(5000);//连接超时
    opt_.setKeepAliveInterval(60*1000);//心跳包检测间隔
    opt_.setPassword(subKey.toCharArray());//dms 的SUBkey
    opt_.setUserName(pubKey);//dms的pubkey
    cli_.setCallback(callback);//消息的回调

    回调函数详解:

MqttCallback{  
    connectionLost //链接断开
    messageArrived //接收消息
    deliveryComplete //异步发送成功回调
}

        

注明:

1、onnectionLost (Throwable throwable) //连接断开
网络状态不佳或被人挤下去都调用这个方法,主动断开不会调用此方法
此方法会给出一个异常 通过throwable.getMessage()可以获得造成连接失败的原因
页可以在这个回调里执行重新连接的逻辑


2、messageArrived (String topic, MqttMessage message)//接收消息
topic 指的是该消息是由哪个话题传过来的, 可以通过
String content = new String(message.getPayload()) 获取消息内容


3、deliveryComplete(IMqttDeliveryToken token) //异步发送成功回调
消息发送成功后回调,可以通过
String content = new String(token.getMessage().getPayload()) 获取发送的内容



    连接服务器

    IMqttActionListener connCallback;
    cli_.connect(opt_, userContext, connCallback);


    下面系列操作都是建立在connect成功,以及链接未断开的情况下,才能成功。

    关注话题:

    IMqttActionListener subCallback;
    String topic;
    int qos;//取值 0 ,1
    cli_.subscribe(topic,qos,userContext,subCallback);

    推送消息:

    IMqttActionListener pubCallback;
    String topic;
    int qos;//取值 0 ,1
    byte[] payload = "要发送的内容".getBytes(Charset.defaultCharset());
    cli_.publish(topic, payload,qos,false,userContext,pubCallback);


    断开连接:

    IMqttActionListener disCallback;
    cli_.disconnect(userContext,disCallback);

        


    

2006 - 2023 aodianyun.com, All Rights Reserved. 奥点科技 版权所有 增值电信业务经营许可证:浙B2-20110306 浙ICP备07500424号 |

  • 电话

    X

    售前咨询:

    400-663-6063

    售后服务:

    400-663-6063

  • 客服

  • 建议

    咨询留言 X
    提  交

在线QQ

售前咨询400-663-6063

售后服务400-663-6063