更新时间:2022-02-24 GMT+08:00

设备登录

接口功能

设备在第一次绑定后,或者在设备重启后需要进行登录的流程。

接口描述

1
public static boolean login();

接口所属类

LoginService

接口返回值

返回值

描述

true

成功。

false

失败。

说明:

此返回值是调用接口的同步返回结果,返回true只是说明接口调用成功,并不说明登录成功,登录成功需要收到LoginService.TOPIC_LOGIN_CONNECTED广播。登录前通过参数配置接口(配置业务参数)传入所需的登录信息。

返回结果

广播名称

广播参数

成员

描述

TOPIC_LOGIN_CONNECTED

IotaMessage对象

(使用intent.getSerializableExtra(LoginService. LOGIN_BROADCAST_MSG_IE_IOTAMSG)方法获取)

登录成功或重连成功。

TOPIC_LOGIN_DISCONNECT

IotaMessage对象

(使用intent.getSerializableExtra(LoginService. LOGIN_BROADCAST_MSG_IE_IOTAMSG)方法获取)

LOGIN_IE_REASON

登录或重连失败原因。

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
//配置登录参数
LoginConfig.setConfig(LoginConfig.LOGIN_CONFIG_DEVICEID, deviceId); 
LoginConfig.setConfig(LoginConfig.LOGIN_CONFIG_APPID, appId); 
LoginConfig.setConfig(LoginConfig.LOGIN_CONFIG_SECRET, passWord); 
LoginConfig.setConfig(LoginConfig.LOGIN_CONFIG_IOCM_ADDR, haAddr); 
LoginConfig.setConfig(LoginConfig.LOGIN_CONFIG_IOCM_PORT, 8943); 
LoginConfig.setConfig(LoginConfig.LOGIN_CONFIG_MQTT_ADDR, haAddr); 
LoginConfig.setConfig(LoginConfig.LOGIN_CONFIG_MQTT_PORT, 8883); 

//调用登录接口
LoginService.login();

然后等待Agent Lite的连接状态广播。

建议:

  1. 在连接成功的处理函数中进行非直连设备状态上报的处理,并且将缓存的上报数据进行上报。
  2. 在连接断开的处理函数中记录设备断开状态,之后如果有非直连设备上报数据,需要进行缓存,等到连接成功后再进行上报。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//接收登录成功响应 
BroadcastReceiver mReceiverConnect;
mReceiverConnect = new BroadcastReceiver() {
    @Override 
       public void onReceive(Context context, Intent intent) {
        //获取IotaMessage
        IotaMessage iotaMsg = (IotaMessage)intent.getSerializableExtra(LoginService. LOGIN_BROADCAST_MSG_IE_IOTAMSG);
        //从回调返回的消息句柄中获取当前系统状态 
        int status = uspMsg.getint(LoginService.LOGIN_IE_STATUS, 0);
        //update device states 
        ... 
        return true;
    }
}
mLocalBroadcastManager = LocalBroadcastManager.getInstance(this);
IntentFilter filterCon= new IntentFilter(LoginService.TOPIC_LOGIN_CONNECTED);
mLocalBroadcastManager.registerReceiver(mReceiverConnect, filterCon);
//接收登录失败响应 
BroadcastReceiver mReceiverDisconnect;
mReceiverDisconnect = new BroadcastReceiver() {
    @Override 
       public void onReceive(Context context, Intent intent) {
        //获取IotaMessage
        IotaMessage iotaMsg = (IotaMessage)intent.getSerializableExtra(LoginService. LOGIN_BROADCAST_MSG_IE_IOTAMSG);
        //获取响应的错误码 
        int reason = iotaMsg.getint(LoginService.LOGIN_IE_REASON, 0);
        //stop reporting data 
        ... 
        return true;
    }
}
mLocalBroadcastManager = LocalBroadcastManager.getInstance(this);
IntentFilter filterDiscon= new IntentFilter(LoginService.TOPIC_LOGIN_DISCONNECTED);
mLocalBroadcastManager.registerReceiver(mReceiverDisconnect, filterDiscon);

设备登录后,表示该设备已经成功的连接到物联网平台。

连接成功后,如果因为网络或服务器原因导致连接断开,Agent Lite会自动尝试重新连接,并将实时状态通过这两个广播上报给第三方应用。