设备登录
接口功能
设备在第一次绑定后,或者在设备重启后需要进行登录的流程。
接口描述
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 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会自动尝试重新连接,并将实时状态通过这两个广播上报给第三方应用。