Step2: Login and Logout
准备 SDKAppID
SDKAppID 是用于区分客户账号的唯一标识。我们建议每一个独立的 App 都申请一个新的 SDKAppID。不同 SDKAppID 之间的消息是天然隔离的,不能互通。您必须拥有正确的 SDKAppID,才能进行初始化。您可以在 控制台 查看所有的 SDKAppID,单击创建应用按钮,创建新的 SDKAppID。
功能描述
您需要调用 SDK 登录接口,验证账号身份,获得账号的功能使用权限。登录 SDK 成功后,才能进入房间,并进行一系列的操作。
登录
login 接口的关键参数如下:
参数 | 含义 | 说明 |
UserID | 登录用户唯一标识 | 建议只包含大小写英文字母(a-z、A-Z)、数字(0-9)、下划线(_)和连词符(-)。长度不超过 32 字节。 |
UserSig | 登录票据 |
您需要在以下场景调用 login 接口:
App 启动后首次使用 SDK 的功能。
以下场景无需调用 login 接口:
用户的网络断开并重新连接后,不需要调用 login 函数,SDK 会自动上线。
当一个登录过程在进行时,不需要进行重复登录。
说明:
1. 调用 SDK 接口成功登录后,将会开始计算 MAU,请根据业务场景合理调用登录接口,避免出现 MAU 过高的情况。
2. 在一个 App 中,SDK 不支持多个账号同时在线,如果同时登录多个账号,只有最后登录的账号在线。
示例代码如下:
let sdkAppId = 1400000000 // 请设置自己应用的 sdkAppIDlet 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; // 请设置自己应用的 sdkAppIDString userId = "your user id";String userSig = "userSig from your server";TUIRoomEngine.login(context, sdkAppId, userId, userSig,new TUIRoomDefine().ActionCallback() {@Overridepublic void onSuccess() {Log.i("sdk", "success");}@Overridepublic 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);}});
获取登录用户的基本信息
示例代码如下:
// 获取登录成功的用户基本信息let selfUserInfo = TUIRoomEngine.getSelfInfo()
TUIRoomDefine.LoginUserInfo loginUserInfo = TUIRoomEngine.getSelfInfo();
登出
普通情况下,如果您的应用生命周期跟 SDK 生命周期一致,退出应用前可以不登出,直接退出即可。但有些特殊场景,例如您只在进入特定界面后才使用 SDK,退出界面后不再使用,此时可以调用 logout (iOS & Mac / Android ) 接口登出 SDK。
示例代码如下:
TUIRoomEngine.logout {print("success")} onError: { code, message inprint("failure, code:\(code), message:\(message)")}
TUIRoomEngine.logout(new TUIRoomDefine.ActionCallback() {@Overridepublic void onSuccess() {Log.i("sdk","success");}@Overridepublic void onError(TUICommonDefine.Error error, String message) {Log.i("sdk","error" + error + ",message" + message);}});
账号切换
如果您希望在应用中实现账号切换的需求,只需要每次切换账号时调用 login 即可。
例如已经登录了 alice,现在要切换到 bob,只需要直接 login bob 即可。login bob 前无需显式调用 logout alice,SDK 内部会自动处理。