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