设备接入 IoTDA-Android Demo使用说明:建立连接

时间:2023-11-01 16:20:25

建立连接

设备或网关在接入物联网平台时首先需要和平台建立连接,从而将设备或网关与平台进行关联。开发者通过传入设备信息,将设备或网关连接到物联网平台。

  1. MainActivity类主要提供建立MQTT/MQTTS连接等方法,MQTT默认使用1883端口,MQTTS默认使用8883端口(需要加载证书)。
    if (isSSL) {    editText_mqtt_log.append("开始建立MQTTS连接" + "\n");    serverUrl = "ssl://" + IOT_PLATFORM_URL + ":8883";} else {    editText_mqtt_log.append("开始建立MQTT连接" + "\n");    serverUrl = "tcp://" + IOT_PLATFORM_URL + ":1883";}
  2. ConnectUtils类主要提供了SSL加载证书的getMqttsCerificate方法,如果是MQTTS建链方式,需要调用该方法加载证书。
    DigiCertGlobalRootCA.bks:设备校验平台身份的证书,用于设备侧接入物联网平台登录鉴权使用,可以在资源获取中下载证书文件
    SSLContext sslContext = SSLContext.getInstance("SSL");KeyStore keyStore = KeyStore.getInstance("bks");keyStore.load(context.getAssets().open("DigiCertGlobalRootCA.bks"), null);//加载libs目录下的证书TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance("X509");trustManagerFactory.init(keyStore);TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();sslContext.init(null, trustManagers, new SecureRandom());sslSocketFactory = sslContext.getSocketFactory();
  3. MainActivity类提供了设置初始化MqttConnectOptions的方法。mqtt连接心跳时间的建议值是120秒,有使用限制
    mqttAndroidClient = new MqttAndroidClient(mContext, serverUrl, clientId);private MqttConnectOptions intitMqttConnectOptions(String currentDate) {    String password = ConnectUtils.sha256_HMAC(editText_mqtt_device_connect_password.getText().toString(), currentDate);    MqttConnectOptions mqttConnectOptions = new MqttConnectOptions();    mqttConnectOptions.setAutomaticReconnect(true);    mqttConnectOptions.setCleanSession(true);    mqttConnectOptions.setKeepAliveInterval(120);    mqttConnectOptions.setConnectionTimeout(30);    mqttConnectOptions.setUserName(editText_mqtt_device_connect_deviceId.getText().toString());    mqttConnectOptions.setPassword(password.toCharArray());    return mqttConnectOptions;}
  4. MainActivity类提供了Mqtt客户端建立连接的的方法connect,并通过回调函数处理连接后的消息返回结果。
    mqttAndroidClient.connect(mqttConnectOptions, null, new IMqttActionListener()
    mqttAndroidClient.setCallback(new MqttCallBack4IoTHub());
support.huaweicloud.com/devg-iothub/iot_02_2130.html