Step2: Login and Logout

准备 SDKAppID

SDKAppID 是用于区分客户账号的唯一标识。我们建议每一个独立的 App 都申请一个新的 SDKAppID。不同 SDKAppID 之间的消息是天然隔离的,不能互通。您必须拥有正确的 SDKAppID,才能进行初始化。您可以在 控制台 查看所有的 SDKAppID,单击创建应用按钮,创建新的 SDKAppID。




功能描述

您需要调用 SDK 登录接口,验证账号身份,获得账号的功能使用权限。登录 SDK 成功后,才能进入房间,并进行一系列的操作。

登录

首次登录账号时,不需要先注册这个账号,直接登录即可,SDK 在登录过程中发现是未注册的账号,会自动注册。您可以调用 login(iOS & Mac / Android) 接口进行登录。
login 接口的关键参数如下:
参数
含义
说明
UserID
登录用户唯一标识
建议只包含大小写英文字母(a-z、A-Z)、数字(0-9)、下划线(_)和连词符(-)。长度不超过 32 字节。
UserSig
登录票据
由您的业务服务器进行计算以保证安全。计算方法请参考 用户鉴权
您需要在以下场景调用 login 接口:
App 启动后首次使用 SDK 的功能。
在线时被踢下线:用户在线情况下被踢,SDK 会通过 onKickedOffline (iOS & Mac /Android) 回调通知给您,此时可以在 UI 提示用户,并调用 login 重新登录。
以下场景无需调用 login 接口:
用户的网络断开并重新连接后,不需要调用 login 函数,SDK 会自动上线。
当一个登录过程在进行时,不需要进行重复登录。
说明:
1. 调用 SDK 接口成功登录后,将会开始计算 MAU,请根据业务场景合理调用登录接口,避免出现 MAU 过高的情况。
2. 在一个 App 中,SDK 不支持多个账号同时在线,如果同时登录多个账号,只有最后登录的账号在线。
示例代码如下:
iOS
Android
let sdkAppId = 1400000000 // 请设置自己应用的 sdkAppID
let userId = "your user id"
let userSig = "userSig from your server"

TUIRoomEngine.login(sdkAppId: sdkAppId, userId: userId, userSig: userSig) {
print("success")
} onError: { code, message in
// 如果返回以下错误码,表示使用 UserSig 已过期,请您使用新签发的 UserSig 进行再次登录。
// 1. ERR_USER_SIG_EXPIRED(6206)
// 2. ERR_SVR_ACCOUNT_USERSIG_EXPIRED(70001)
// 注意:其他的错误码,请不要在这里调用登录接口,避免 SDK 登录进入死循环。
print("failure, code:\(code), message:\(message)")
}
Context context = getApplicationContext();
int sdkAppId = 1400000000; // 请设置自己应用的 sdkAppID
String userId = "your user id";
String userSig = "userSig from your server";

TUIRoomEngine.login(context, sdkAppId, userId, userSig,
new TUIRoomDefine().ActionCallback() {
@Override
public void onSuccess() {
Log.i("sdk", "success");
}

@Override
public void onError(TUICommonDefine.Error error, String message) {
// 如果返回以下错误码,表示使用 UserSig 已过期,请您使用新签发的 UserSig 进行再次登录。
// 1. ERR_USER_SIG_EXPIRED(6206)
// 2. ERR_SVR_ACCOUNT_USERSIG_EXPIRED(70001)
// 注意:其他的错误码,请不要在这里调用登录接口,避免 SDK 登录进入死循环。
Log.i("sdk", "failure code:" + error + ",message:" + message);
}
});

获取登录用户的基本信息

在登录成功后,通过调用 getSelfInfo( iOS & Mac / Android) 获取登录用户信息的基本信息。如果登录失败,获取的登录用户 UserID 为空。
示例代码如下:
iOS
Android
// 获取登录成功的用户基本信息
let selfUserInfo = TUIRoomEngine.getSelfInfo()
TUIRoomDefine.LoginUserInfo loginUserInfo = TUIRoomEngine.getSelfInfo();

登出

普通情况下,如果您的应用生命周期跟 SDK 生命周期一致,退出应用前可以不登出,直接退出即可。但有些特殊场景,例如您只在进入特定界面后才使用 SDK,退出界面后不再使用,此时可以调用 logout (iOS & Mac / Android ) 接口登出 SDK。
示例代码如下:
iOS
Android
TUIRoomEngine.logout {
print("success")
} onError: { code, message in
print("failure, code:\(code), message:\(message)")
}
TUIRoomEngine.logout(new TUIRoomDefine.ActionCallback() {
@Override
public void onSuccess() {
Log.i("sdk","success");
}

@Override
public void onError(TUICommonDefine.Error error, String message) {
Log.i("sdk","error" + error + ",message" + message);
}
});

账号切换

如果您希望在应用中实现账号切换的需求,只需要每次切换账号时调用 login 即可。
例如已经登录了 alice,现在要切换到 bob,只需要直接 login bob 即可。login bob 前无需显式调用 logout alice,SDK 内部会自动处理。