# 登录

本章节将介绍如何初始化 JC SDK 并登录。

# 初始化

在主线程调用 JCClient.create (opens new window) ,创建 JCClient (opens new window) 实例对象。传入获取到的 appKey ,即可初始化 JCClient (opens new window)

/// JCClient 对象
JCClient mClient;

public bool initialize(Application app) {
    mClient = JCClient.create(app, "用户 appKey", this);
    /// 获取初始化状态(用来判断初始化状态)
    mInit = mClient.state == JCClientState.Idle;
    return mInit;
}

其中,this 是指实现 JCClientCallback (opens new window) 接口的对象,JCClientCallback 用于将 client 的状态变化通知给上层。

JCClientCallback 中的主要方法如下

//登录结果回调
public void onLogin(bool result, JCClientReason reason)
{
}
//登出结果回调
public void onLogout(JCClientReason reason)
{
}
//登录状态变化回调
public void onClientStateChange(JCClientState state, JCClientState oldState)
{
}

# 发起登录

SDK 初始化之后,即可进行登录的集成。登录接口调用流程如下所示:

../../../../_images/workflow_login_android.jpg

先创建 JCClient.LoginParam (opens new window) 实例以调整登录参数。后调用 login (opens new window) ,发起登录:

JCClient.LoginParam loginParam = new JCClient.LoginParam();
// 发起登录
mClient.login("userID", "password", loginParam);

TIP

  1. userID 用户名不能为空,可由英文、数字和 +-_. 组成(特殊字符不能作为第一个字符),大小写不敏感,长度不能超过 64 个字符。

  2. password 密码,不能为空,长度不能超过 128 字符。

  3. 调用该接口返回 true 时只代表调用接口成功,并不代表登录成功。登录的结果会通过 onLogin 回调上报。

调用接口成功后,首先会触发登录状态改变回调 onClientStateChange (opens new window) 。您可以通过重写 onClientStateChange (opens new window) 执行逻辑操作。

public void onClientStateChange(JCClientState state, JCClientState oldState) {
     if (state == JCClientState.Idel) { /// 未登录
        ...
    } else if (state == JCClientState.Logining) { /// 正在登录
        ...
    } else if (state == JCClientState.Logined) { /// 登录成功
        ...
    } else if (state == JCClientState.Logouting) { /// 登出中
        ...
    }
}

之后触发 onLogin (opens new window) 回调。您可以通过重写 onLogin (opens new window) 执行逻辑操作。

public void onLogin(bool result, JCClientReason reason) {
    if (result) {/// 登录成功
        ...
    }
    if (reason == JCClientReason.AUTH) {/// 账号密码错误
        ...
    }

}

登录成功之后,SDK 会自动保持与服务器的连接状态,直到用户主动调用登出接口,或者因为帐号在其他设备登录导致该设备登出。登录成功/失败原因 参考 JCClientReason (opens new window)

# 登出

登出接口调用流程如下所示:

../../../../_images/workflow_logout_android.jpg

调用 logout (opens new window) 可以发起登出。更多登出原因参考:JCClientReason (opens new window)

登出同样会触发登录状态改变(onClientStateChange)回调,之后将通过 onLogout 回调上报登出结果。

public void onLogout(JCClientReason reason) {
    if (reason == JCClientReason.ServerLogout) {/// 强制登出
        ...
    }
}
最后更新时间: 2023/5/22 17:31:39