login
(Android / iOS & Mac / Windows) 接口进行登录。login
接口的关键参数如下:参数 | 含义 | 说明 |
UserID | 登录用户唯一标识 | 建议只包含大小写英文字母(a-z、A-Z)、数字(0-9)、下划线(_)和连词符(-)。长度不超过 32 字节。 |
UserSig | 登录票据 |
login
接口:login
接口的回调会返回 ERR_USER_SIG_EXPIRED(6206)
或 ERR_SVR_ACCOUNT_USERSIG_EXPIRED(70001)
错误码,此时请您生成新的 userSig 重新登录。onKickedOffline
(Android / iOS & Mac / Windows) 回调通知给您,此时可以在 UI 提示用户,并调用 login
重新登录。ERR_LOGIN_KICKED_OFF_BY_OTHER(6208)
需要在控制台单独配置。login
接口:login
函数,SDK 会自动上线。String userID = "your user id";String userSig = "userSig from your server";V2TIMManager.getInstance().login(userID, userSig, new V2TIMCallback() {@Overridepublic void onSuccess() {Log.i("sdk", "success");}@Overridepublic void onError(int code, String desc) {// 如果返回以下错误码,表示使用 UserSig 已过期,请您使用新签发的 UserSig 进行再次登录。// 1. ERR_USER_SIG_EXPIRED(6206)// 2. ERR_SVR_ACCOUNT_USERSIG_EXPIRED(70001)// 注意:其他的错误码,请不要在这里调用登录接口,避免 SDK 登录进入死循环。Log.i("sdk", "failure, code:" + code + ", desc:" + desc);}});
NSString *userID = @"your user id";NSString *userSig = @"userSig from your server";[[V2TIMManager sharedInstance] login:userID userSig:userSig succ:^{NSLog(@"success");} fail:^(int code, NSString *desc) {// 如果返回以下错误码,表示使用 UserSig 已过期,请您使用新签发的 UserSig 进行再次登录。// 1. ERR_USER_SIG_EXPIRED(6206)// 2. ERR_SVR_ACCOUNT_USERSIG_EXPIRED(70001)// 注意:其他的错误码,请不要在这里调用登录接口,避免 SDK 登录进入死循环。NSLog(@"failure, code:%d, desc:%@", code, desc);}];
class LoginCallback final : public V2TIMCallback {public:LoginCallback() = default;~LoginCallback() override = default;using SuccessCallback = std::function<void()>;using ErrorCallback = std::function<void(int, const V2TIMString&)>;void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {success_callback_ = std::move(success_callback);error_callback_ = std::move(error_callback);}void OnSuccess() override {if (success_callback_) {success_callback_();}}void OnError(int error_code, const V2TIMString& error_message) override {if (error_callback_) {error_callback_(error_code, error_message);}}private:SuccessCallback success_callback_;ErrorCallback error_callback_;};V2TIMString userID = "your user id";V2TIMString userSig = "userSig from your server";auto callback = new LoginCallback;callback->SetCallback([=]() {std::cout << "success";delete callback;},[=](int error_code, const V2TIMString& error_message) {// 如果返回以下错误码,表示使用 UserSig 已过期,请您使用新签发的 UserSig 进行再次登录。// 1. ERR_USER_SIG_EXPIRED(6206)// 2. ERR_SVR_ACCOUNT_USERSIG_EXPIRED(70001)// 注意:其他的错误码,请不要在这里调用登录接口,避免 SDK 登录进入死循环。std::cout << "failure, code:" << error_code << ", desc:" << error_message.CString();delete callback;});V2TIMManager::GetInstance()->Login(userID, userSig, callback);
// 获取登录成功的用户 UserIDString loginUserID = V2TIMManager.getInstance().getLoginUser();
// 获取登录成功的用户 UserIDNSString *loginUserID = [[V2TIMManager sharedInstance] getLoginUser];
// 获取登录成功的用户 UserIDV2TIMString loginUserID = V2TIMManager::GetInstance()->GetLoginUser();
getLoginStatus
(Android / iOS & Mac / Windows) 获取登录状态,如果用户已经处于已登录和登录中状态,请勿再频繁调用登录接口登录。SDK 支持的登录状态,如下表所示:登录状态 | 含义 |
V2TIM_STATUS_LOGINED | 已登录 |
V2TIM_STATUS_LOGINING | 登录中 |
V2TIM_STATUS_LOGOUT | 无登录 |
int loginStatus = V2TIMManager.getInstance().getLoginStatus();
V2TIMLoginStatus loginStatus = [[V2TIMManager sharedInstance] getLoginStatus];
V2TIMLoginStatus loginStatus = V2TIMManager::GetInstance()->GetLoginStatus();
login
接口时,如果同一个账号的多端登录策略超出限制,新登录的实例会把之前已登录的实例踢下线。如果您在初始化时调用了 addIMSDKListener
(Android / iOS & Mac / Windows) 添加了 SDK 监听器,对于之前已登录的一方,会收到 onKickedOffline
(Android / iOS & Mac / Windows) 回调。logout
(Android / iOS & Mac / Windows) 接口登出 SDK。登出成功后,不会再收到其他人发送的新消息。注意这种情况下,登出成功后还需要调 unInitSDK
(Android / iOS & Mac / Windows) 对 SDK 进行反初始化。V2TIMManager.getInstance().logout(new V2TIMCallback() {@Overridepublic void onSuccess() {Log.i("sdk", "success");}@Overridepublic void onError(int code, String desc) {Log.i("sdk", "failure, code:" + code + ", desc:" + desc);}});
[[V2TIMManager sharedInstance] logout:^{NSLog(@"success");} fail:^(int code, NSString *desc) {NSLog(@"failure, code:%d, desc:%@", code, desc);}];
class Callback final : public V2TIMCallback {public:using SuccessCallback = std::function<void()>;using ErrorCallback = std::function<void(int, const V2TIMString&)>;Callback() = default;~Callback() override = default;void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {success_callback_ = std::move(success_callback);error_callback_ = std::move(error_callback);}void OnSuccess() override {if (success_callback_) {success_callback_();}}void OnError(int error_code, const V2TIMString& error_message) override {if (error_callback_) {error_callback_(error_code, error_message);}}private:SuccessCallback success_callback_;ErrorCallback error_callback_;};V2TIMString userID = "your user id";V2TIMString userSig = "userSig from your server";auto callback = new Callback{};callback->SetCallback([=]() {std::cout << "success";delete callback;},[=](int error_code, const V2TIMString& error_message) {std::cout << "failure, code:" << error_code << ", desc:" << error_message.CString();delete callback;});V2TIMManager::GetInstance()->Logout(callback);
login
即可。
本页内容是否解决了您的问题?