功能描述
初始化 IM SDK 后,您需要调用 SDK 登录接口,验证账号身份,获得账号的功能使用权限。登录 IM SDK 成功后,才能正常使用消息、会话等功能。
注意
只有获取会话的接口可以在调用登录接口后立即调用。其他各项功能的接口,必须在 SDK 登录成功后才能调用。因此在使用其他功能之前,请务必登录且确保登录成功,否则可能导致功能异常或不可用!
登录
login
接口的关键参数如下:参数 | 含义 | 说明 |
UserID | 登录用户唯一标识 | 建议只包含大小写英文字母(a-z、A-Z)、数字(0-9)、下划线(_)和连词符(-)。长度不超过 32 字节。 |
UserSig | 登录票据 |
您需要在以下场景调用
login
接口:App 启动后首次使用 IM SDK 的功能。
登录时票据过期:
login
接口的回调会返回 ERR_USER_SIG_EXPIRED(6206)
或 ERR_SVR_ACCOUNT_USERSIG_EXPIRED(70001)
错误码,此时请您生成新的 userSig 重新登录。在线时票据过期:用户在线期间也可能收到
onUserSigExpired
(点击查看详情) 回调,此时需要您生成新的 userSig 并重新登录。在线时被踢下线:用户在线情况下被踢,IM SDK 会通过
onKickedOffline
(点击查看详情) 回调通知给您,此时可以在 UI 提示用户,并调用 login
重新登录。以下场景无需调用
login
接口:用户的网络断开并重新连接后,不需要调用
login
函数,IM SDK 会自动上线。当一个登录过程在进行时,不需要进行重复登录。
说明
1. 调用 IM SDK 接口成功登录后,将会开始计算 DAU,请根据业务场景合理调用登录接口,避免出现 DAU 过高的情况。
2. 在一个 App 中,IM SDK 不支持多个账号同时在线,如果同时登录多个账号,只有最后登录的账号在线。
示例代码如下:
String userID = "your user id";String userSig = "userSig from your server";V2TimCallback res = await TencentImSDKPlugin.v2TIMManager.login(userID: userID, userSig: userSig);if(res.code == 0){// 登录成功逻辑}else{// 登录失败逻辑}
获取登录用户
示例代码如下:
// 在用户登录成功之后可调用// 调用getLoginUser获取登录成功的用户 UserIDV2TimValueCallback<String> getLoginUserRes =await TencentImSDKPlugin.v2TIMManager.getLoginUser();if (getLoginUserRes.code == 0) {//获取成功getLoginUserRes.data; // getLoginUserRes.data为查询到的登录用户的UserID}
获取登录状态
登录状态 | 含义 |
V2TIM_STATUS_LOGINED (1) | 已登录 |
V2TIM_STATUS_LOGINING (2) | 登录中 |
V2TIM_STATUS_LOGOUT (3) | 未登录 |
示例代码如下:
// 在用户登录成功之后可调用// 调用getLoginStatus获取登录成功的用户的状态V2TimValueCallback<int> getLoginStatusRes =await TencentImSDKPlugin.v2TIMManager.getLoginStatus();if (getLoginStatusRes.code == 0) {int? status = getLoginStatusRes.data; // getLoginStatusRes.data为用户登录状态值if (status == 1) {// 已登录} else if (status == 2) {// 登录中} else if (status == 3) {// 未登录}}
多端登录与互踢
您可以在腾讯云控制台配置 IM SDK 的同平台可登录实例数配置,即相同平台的设备可支持几个同时在线。
此功能仅限旗舰版使用。目前 Web 端可同时在线个数最多为 10 个。Android、iPhone、iPad、Windows、Mac(Flutter以实际编译结果为准) 平台可同时在线设备个数最多为 3 个。
相关配置请参考:登录设置。
调用
login
(点击查看详情) 接口时,如果同一个账号的多端登录策略超出限制,新登录的实例会把之前已登录的实例踢下线。
被踢下线的一方,会收到 onKickedOffline
(点击查看详情) 回调。登出
普通情况下,如果您的应用生命周期跟 IM SDK 生命周期一致,退出应用前可以不登出,直接退出即可。
但有些特殊场景,例如您只在进入特定界面后才使用 IM SDK,退出界面后不再使用,此时可以调用
logout
(点击查看详情) 接口登出 SDK。登出成功后,不会再收到其他人发送的新消息。注意这种情况下,登出成功后还需要调 unInitSDK
(点击查看详情) 对 SDK 进行反初始化。示例代码如下:
V2TimCallback logoutRes = await TencentImSDKPlugin.v2TIMManager.logout();if(logoutRes.code == 0){}
账号切换
联系我们