登录与连接状态
本文介绍与 Linkus Android SDK 登录及连接状态相关的功能及实现方法。
支持功能
功能 | 说明 |
---|---|
首次登录 (手动登录) | 初始化 Linkus SDK 后的首次登录。首次登录需要提供完整的登录凭证以及 PBX 服务器的地址,用于与 PBX 服务器建立连接并进行身份验证。 |
缓存登录 | 首次登录后,Linkus SDK 会将登录凭据及 PBX 服务器信息缓存在本地设备上,以便用户在后续的登录中可以直接使用,而无需再次输入。 |
查询用户登录状态 | 检查当前用户的 Linkus SDK 登录状态。 |
查询与 PBX 服务器的连接状态 | 判断 Linkus SDK 是否与 PBX 服务器相连接。 |
SDK 通知回调 | 监听及处理用户账号登出、与 PBX 重连成功及 CDR 变更等事件。 |
首次登录 (手动登录)
此方法会在用户首次登录 Linkus SDK 时使用。此方法要求用户输入自己的邮箱地址及登录签名作为登录凭证,以及 PBX 的 IP 地址用于与 PBX
服务器建立连接。
- 前提条件
- 已 获取 Linkus Android SDK 登录签名。
- 实现方法
-
/** * 手动登录 * * @param context * @param userName:用户的邮箱地址 * @param passWord:用户的 Linkus SDK 登录签名 * @param localeIp:PBX 的本地 IP 地址 * @param localePort:PBX 本地 IP 地址所使用的端口 * @param remoteIp:PBX 的远程 IP 地址 * @param remotePort:PBX 远程 IP 地址所使用的端口 * 根据用户的实际使用环境,"localeIp,localePort" 和 "remoteIp, remotePort" 两组数据中至少有一组必须填写对应的值。 * @param requestCallback 登录结果回调 * @return 登录接口返回值,表示登录失败或异常的原因。更多信息参见代码下方的表格。 */ public void loginBlock(Context context, String userName, String passWord, String localeIp, int localePort, String remoteIp, int remotePort, RequestCallback<Boolean> requestCallback) //手动登录示例 YlsLoginManager.getInstance().loginBlock(this, userName, password, localeIp, localePortI, remoteIp, remotePortI, new RequestCallback<>() { @Override // 登录成功回调 public void onSuccess(Boolean result) { closeProgressDialog(); startActivity(new Intent(LoginActivity.this, DialPadActivity.class)); } @Override// 登录失败回调 public void onFailed(int code) { closeProgressDialog(); Toast.makeText(LoginActivity.this, R.string.login_tip_login_failed, Toast.LENGTH_LONG).show(); } @Override// 登录异常回调 public void onException(Throwable exception) { closeProgressDialog(); Toast.makeText(LoginActivity.this, R.string.login_tip_login_failed, Toast.LENGTH_LONG).show(); } });
- 登录接口返回值说明
-
返回值 说明 1 无法连接 PBX 服务器。 -5 登录请求无响应。 403 用户名或登录签名错误。 405 Linkus 客户端被禁用。 407 该用户账号已被锁定。 416 禁止访问所请求的 IP 地址 (PBX 已启用 国家地区 IP 访问防御)。
缓存登录
首次登录后,Linkus SDK
会缓存登录信息。此方法会自动读取已有的缓存信息进行登录,无需用户再次输入。
int networkType = NetWorkUtil.getNetWorkType(this);
YlsLoginManager.getInstance().cacheLogin(networkType);
查询用户登录状态
/**
* 判断用户是否已登录 Linkus SDK
* @return 返回值,表示用户的登录状态;true:用户已登录,false:用户未登录
*/
public boolean isLoginEd()
//调用示例
boolean isLoginEd = YlsLoginManager.getInstance().isLoginEd();
查询与 PBX 服务器的连接状态
/**
* 判断 Linkus SDK 是否与 PBX 服务器相连接
* @return 返回值,表示连接状态;true:已连接,false:未连接
*/
public synchronized boolean isConnected()
//调用示例
YlsLoginManager.getInstance().isConnected();
SDK 通知回调
SDK 通知回调可用于监听及处理用户账号登出、与 PBX
重连成功及通话记录变更等事件。
YlsBaseManager.getInstance().setSdkCallback(new SdkCallback() {
// 账号登出回调。账号登出事件类型参见代码下方表格
@Override
public void onLogout(int type) {
context.startActivity(new Intent(context, LoginActivity.class));
}
// Linus SDK 与 PBX 服务器重连成功回调
@Override
public void onReconnectSuccess() {}
// 通话记录(CDR)变更回调
@Override
public void onCdrChange(int syncResult) {
EventBus.getDefault().post(new CallLogChangeEvent(syncResult));
}
});
- 用户账号登出事件类型
-
事件 事件码 说明 SdkEventCode.EVENT_USER_RELOGIN 1005 该帐号已在其他设备登录。 SdkEventCode.P_EVENT_DISABLE_LINKUS_APP 20014 Linkus 手机端被禁用。 SdkEventCode.EVENT_LOGIN_LOCKED 1009 该账号已被锁定。 SdkEventCode.EVENT_LOGIN_INFO_ILLEGAL 1010 缓存登录信息错误。 SdkEventCode.EVENT_CACHE_LOGIIN_USER_NOTFOUND 1011 缓存登录信息为空。 SdkEventCode.P_EVENT_LOGIN_MODE_CHANGE 20008 登录模式 (手动登录或缓存登录) 发生变更。 SdkEventCode.P_EVENT_COUNTRY_IP_LIMIT 20083 禁止访问所请求的 IP 地址 (PBX 已启用 国家地区 IP 访问防御)。 SdkEventCode.P_EVENT_LICENSE_EXPIRE 20093 Linkus SDK 服务不可用 (PBX 未购买该服务或服务已过期)。 SdkEventCode.P_EVENT_SDK_STATUS_CHANGE 20153 Linkus SDK 的可用状态发生变更 (PBX 上禁用 Linkus SDK 功能)。 SdkEventCode.P_EVENT_SDK_ACCESSKEY_CHANGE 20154 Linkus SDK 的 访问密钥 发生变更 (PBX 上刷新了 Linkus SDK 的 访问秘钥)。