本章节将介绍如何初始化 SDK 并登录。
初始化
在主线程调用 JCClient.create() ,创建 JCClient 实例对象。传入获取到的 appKey
,即可初始化 JCClient 。
/// JCClient 对象
JCClient mClient;
public bool initialize(Application app) {
mClient = JCClient.create(app, "用户 appKey", this);
/// 获取初始化状态(用来判断初始化状态)
mInit = mClient.state == JCClientState.Idle;
return mInit;
}
其中,this 是指实现 JCClientCallback 接口的对象,JCClientCallback 用于将 client 的状态变化通知给上层。
JCClientCallback 中的主要方法如下
//登录结果回调
public void onLogin(bool result, JCClientReason reason)
{
}
//登出结果回调
public void onLogout(JCClientReason reason)
{
}
//登录状态变化回调
public void onClientStateChange(JCClientState state, JCClientState oldState)
{
}
发起登录
SDK 初始化之后,即可进行登录的集成。登出接口调用流程如下所示:

先创建 JCClient.LoginParam 实例以调整登录参数。后调用 login() ,发起登录:
JCClient.LoginParam loginParam = new JCClient.LoginParam();
/// 1. 设置服务器环境。
loginParam.serverAddress = "服务器地址";
/// 2. 发起登录
mClient.login(userID, password, loginParam);
环境设置
国内环境
http:cn.router.justalkcloud.com:8080
(默认)国际环境
http:intl.router.justalkcloud.com:8080
userID 不能为空,可由英文、数字和
+
、-
、_
、.
组成(特殊字符不能作为第一个字符),大小写不敏感,长度不能超过 64 个字符。password 不能超过 128 个字符。
调用该接口返回 true 时只代表调用接口成功,并不代表登录成功。登录的结果会通过 onLogin 回调上报。
调用接口成功后,首先会触发登录状态改变回调 onClientStateChange() 。您可以通过重写 onClientStateChange() 执行逻辑操作。
public void onClientStateChange(JCClientState state, JCClientState oldState) {
if (state == JCClient.STATE_IDLE) { /// 未登录
...
} else if (state == JCClient.STATE_LOGINING) { /// 正在登录
...
} else if (state == JCClient.STATE_LOGINED) { /// 登录成功
...
} else if (state == JCClient.STATE_LOGOUTING) { /// 登出中
...
}
}
之后触发 onLogin() 回调。您可以通过重写 onLogin() 执行逻辑操作。
public void onLogin(bool result, JCClientReason reason) {
if (result) {/// 登录成功
...
}
if (reason == REASON_AUTH) {/// 账号密码错误
...
}
}
登录成功之后,SDK 会自动保持与服务器的连接状态,直到用户主动调用登出接口,或者因为帐号在其他设备登录导致该设备登出。登录成功/失败原因 参考 JCClient.ClientReason。
登出
登出接口调用流程如下所示:

调用 logout() 可以发起登出。更多登出原因参考:JCClient.ClientReason
public void onLogout(JCClientReason reason) {
if (reason == REASON_SERVER_LOGOUT) {/// 强制登出
...
}
}