• UIKit
  • SDK
  • 服务端 API
Chat/
SDK/
React Native/
SDK
  • Run Demo
  • SDK 集成
  • 初始化
  • 登录和注销
  • 消息
    • 消息概述
    • 发送消息
    • 接收消息
    • 历史消息
    • 转发消息
    • 修改消息
    • 消息插入
    • 删除消息
    • 清空消息
    • 撤回消息
    • 在线消息
    • 已读回执
    • 查询消息
    • 群 @ 消息
    • 定向群消息
    • 通知免打扰
    • 消息扩展
  • 群组
    • 产品概述
    • 群组管理
    • 群资料
    • 群成员管理
    • 群成员资料
    • 自定义群属性
    • 社群管理
  • 用户
    • 用户资料
    • 好友管理
    • 好友列表
    • 黑名单
  • 离线推送
    • 离线推送
  • 局部搜索
    • 查找消息
    • 查找好友
    • 查找群组
    • 查找群成员
  • 信令
    • 信令管理
  • Changelog
  • 开发指引
  • 控制台指南
    • 创建和升级应用
    • 基本配置
    • 功能配置
    • 账号管理
    • 群组管理
    • 回调配置
  • 产品介绍
    • 消息管理
      • 单聊消息
      • 消息存储
      • 离线推送
      • 群消息
      • 消息格式
    • 账号系统
      • 登陆验证
      • 在线状态管理
    • 群相关
      • 群组系统
      • 群组管理
    • 用户资料和关系链
      • 资料管理
      • 关系链管理
  • 购买指南
    • 计费概述
    • 价格中心
  • 错误码

登录和注销

功能描述

初始化 IM SDK 后,您需要调用 SDK 登录接口,验证帐号身份,获得帐号的功能使用权限。登录 IM SDK 成功后,才能正常使用消息、会话等功能。
注意:
只有获取会话的接口可以在调用登录接口后立即调用。其他各项功能的接口,必须在 SDK 登录成功后才能调用。因此在使用其他功能之前, 请务必登录且确保登录成功 ,否则可能导致功能异常或不可用!

登录

首次登录一个 IM 帐号时,不需要先注册这个帐号。在登录成功后,IM 自动完成这个帐号的注册。 您可以调用 login(Details) 接口进行登录。
login 接口的关键参数如下:
参数
含义
说明
UserID
登录用户唯一标识
建议只包含大小写英文字母(a-z、A-Z)、数字(0-9)、下划线(_)和连词符(-)。长度不超过 32 字节。
UserSig
登录票据
由您的业务服务器进行计算以保证安全。计算方法请参见 UserSig 后台 API
您需要在以下场景调用 login 接口:
App 启动后首次使用 IM SDK 的功能。
登录时票据过期:login 接口的回调会返回 ERR_USER_SIG_EXPIRED(6206)ERR_SVR_ACCOUNT_USERSIG_EXPIRED(70001) 错误码,此时请您生成新的 userSig 重新登录。
在线时票据过期:用户在线期间也可能收到 onUserSigExpired(Details) 回调,此时需要您生成新的 userSig 并重新登录。
在线时被踢下线:用户在线情况下被踢,IM SDK 会通过 onKickedOffline(Details) 回调通知给您,此时可以在 UI 提示用户,并调用 login 重新登录。
以下场景无需调用 login 接口:
用户的网络断开并重新连接后,不需要调用 login 函数,IM SDK 会自动上线。
当一个登录过程在进行时,不需要进行重复登录。
说明:
调用 IM SDK 接口成功登录后,将会开始计算 DAU,请根据业务场景合理调用登录接口,避免出现 DAU 过高的情况。
在一个 App 中,IM SDK 不支持多个帐号同时在线,如果同时登录多个帐号,只有最后登录的帐号在线。
示例代码如下:
import { TencentImSDKPlugin } from "react-native-tim-js";

const userID = "your user id";
const userSig = "userSig from your server";
const res = await TencentImSDKPlugin.v2TIMManager.login(userID, userSig);
if (res.code == 0) {
// 登录成功逻辑
} else {
// 登录失败逻辑
}

获取登录用户

在登录成功后,通过调用getLoginUser(Details) 获取登录用户 UserID。 如果登录失败,获取的登录用户 UserID 为空。
示例代码如下:
import { TencentImSDKPlugin } from "react-native-tim-js";

// 获取登录成功的用户 UserID
const getLoginUserRes = await TencentImSDKPlugin.v2TIMManager.getLoginUser();
if (getLoginUserRes.code == 0) {
userID = getLoginUserRes.data;
}

获取登录状态

通过调用getLoginStatus(Details) 获取登录状态,如果用户已经处于已登录和登录中状态,请勿再频繁调用登录接口登录。IM SDK 支持的登录状态,如下表所示:
登录状态
含义
V2TIM_STATUS_LOGINED (0)
已登录
V2TIM_STATUS_LOGINING (1)
登录中
V2TIM_STATUS_LOGOUT (2)
未登录
示例代码如下:
import { TencentImSDKPlugin } from "react-native-tim-js";

const getLoginStatusRes =
await TencentImSDKPlugin.v2TIMManager.getLoginStatus();
if (getLoginStatusRes.code == 0) {
const status = getLoginStatusRes.data;
if (status == 0) {
// 已登录
} else if (status == 1) {
// 登录中
} else if (status == 2) {
// 未登录
}
}

多端登录与互踢

您可以在腾讯云控制台配置 IM SDK 的多端登录策略。 多端登录策略有多种可选,例如“移动或桌面平台可有 1 种平台在线+Web 可同时在线”、“不同平台均可同时在线“。 相关配置请参见:登录设置
您可以在腾讯云控制台配置 IM SDK 的同平台可登录实例数配置,即相同平台的设备可支持几个同时在线。 此功能仅限旗舰版使用。目前 Web 端可同时在线个数最多为 10 个。Android、iPhone、iPad、Windows、Mac(Flutter 以实际编译结果为准) 平台可同时在线设备个数最多为 3 个。 相关配置请参见:登录设置
调用 login(Details) 接口时,如果同一个帐号的多端登录策略超出限制,新登录的实例会把之前已登录的实例踢下线。 被踢下线的一方,会收到 onKickedOffline(Details) 回调。

登出

普通情况下,如果您的应用生命周期跟 IM SDK 生命周期一致,退出应用前可以不登出,直接退出即可。 但有些特殊场景,例如您只在进入特定界面后才使用 IM SDK,退出界面后不再使用,此时可以调用logout(Details) 接口登出 SDK。登出成功后,不会再收到其他人发送的新消息。注意这种情况下,登出成功后还需要调 unInitSDK(Details) 对 SDK 进行反初始化。
示例代码如下:
import { TencentImSDKPlugin } from "react-native-tim-js";

const logoutRes = await TencentImSDKPlugin.v2TIMManager.logout();
if (logoutRes.code == 0) {
}

帐号切换

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