SDK 自动重连
SDK 包含自动重连机制,第一次自动重连在登录失败0.5秒后发起,之后每次乘2,最多不超过120秒。
本章将讨论以下情况下的 SDK 自动重连:
1. 首次登录必须由界面发起
发起登录时 SDK 会通知 reg state
为 MTC_REG_STATE_REGING
。
场景 1. 第一次登录时没有网络(推荐无网络时不调用登录)
登陆失败时 SDK 会通知 reg state
为 MTC_REG_STATE_IDLE
,state code
为 MTC_CLI_REG_ERR_NETWORK
。此时 SDK 不发起重新登录。
场景 2. 第一次登录时,由于用户名或密码错误登录失败
SDK 会通知 reg state
为 MTC_REG_STATE_IDL
,state code
为 MTC_CLI_REG_ERR_AUTH_FAILED
, MTC_CLI_REG_ERR_INVALID_USER
或者 MTC_CLI_REG_ERR_SRV_FORBIDDEN
,SDK 不发起重新登录。
场景 3. 登录成功
登录成功 SDK 通知 reg state
为 MTC_REG_STATE_REGED
。
场景 4. 其它情况下第一次登陆失败
SDK 会通知 reg state
为 MTC_REG_STATE_IDLE
,SDK 根据策略再次发起登录。
2. 网络切换
网络切换过程中 SDK 会先通知 reg state
为 MTC_REG_STATE_IDLE
, state code
为 MTC_C LI_REG_ERR_NETWORK
。
场景 1. 登录成功的情况下,网络从可用切换到不可用
此时 SDK 不发起重新登录。
场景 2. 登录成功的情况下,网络切换后仍可用
SDK 发起刷新注册,SDK 会通知 reg state
为 MTC_REG_STATE_REGING
。
- 注册成功后SDK 会先通知
reg state
为MTC_REG_STATE_REGED
。 - 注册失败后 SDK 会通知
reg state
为MTC_REG_STATE_IDLE
,state code
为MTC_CLI_REG_ERR_TIMEOUT
。SDK 根据策略再次发起登录。
场景 3. 网络从不可用切换到可用
- 曾经登录成功,后主动注销或被服务器注销,SDK 不会发起重新登录。
- 若曾发起登录,没有主动注销或被服务器注销,SDK 会根据策略发起重登录,SDK 会通知
reg state
为MTC_REG_STATE_REGING
,注册成功后通知reg state
为MTC_REG_STATE_REGED
。
3. 登录成功后,账号在其他设备登录
SDK 通知 reg state
为 MTC_REG_STATE_IDLE,state code
为 MTC_CLI_REG_ERR_DEACTED
。
4. 注销成功后
注销成功后,SDK 关闭定时器,不再尝试重新登录。