更新时间:2024-07-01 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

登录或重连失败原因。

LOGIN_IE_REASON:

枚举项

枚举值

类型

描述

LOGIN_REASON_NULL

0

NA

无原因。

LGN_REASON_CONNCET_ERR

1

NA

连接失败。

LOGIN_REASON_SERVER_BUSY

2

NA

服务器忙。

LOGIN_REASON_AUTH_FAILED

3

NA

鉴权失败、开发者需要停止重新尝试登录。

LOGIN_REASON_NET_UNAVAILABLE

4

NA

网络不可用。

LOGIN_REASON_DEVICE_NOEXIST

5

NA

设备不存在、开发者需要停止重新尝试登录。

LOGIN_REASON_DEVICE_RMVED

6

NA

设备已删除、开发者需要停止重新尝试登录。

LOGIN_REASON_UNKNOWN

7

NA

未知原因。

示例

 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会自动尝试重新连接,并将实时状态通过这两个广播上报给第三方应用。

相关文档