有奖捉虫:云通信与企业服务文档专题,速来> HOT

初始化

V2TIMManager 是 IM SDK 主核心类也是 IM SDK 的入口类,负责 IM SDK 的初始化、登录、消息收发,建群退群等功能。调用 initSDK 接口即可完成初始化:

// 1. 从 IM 控制台获取应用 SDKAppID,详情请参考 SDKAppID
// 2. 初始化 config 对象
V2TIMSDKConfig *config = [[V2TIMSDKConfig alloc] init];
// 3. 指定 log 输出级别,详情请参考 [SDKConfig](#SDKAppID)。
config.logLevel = V2TIM_LOG_INFO;
// 4. 初始化 SDK 并设置 V2TIMSDKListener 的监听对象。
// initSDK 后 SDK 会自动连接网络,网络连接状态可以在 V2TIMSDKListener 回调里面监听。
[[V2TIMManager sharedInstance] initSDK:1400000123 config:config listener:self];

// 5. 监听 V2TIMSDKListener 回调
- (void)onConnecting {
    // 正在连接到腾讯云服务器
}
- (void)onConnectSuccess {
    // 已经成功连接到腾讯云服务器
}
- (void)onConnectFailed:(int)code err:(NSString*)err {
    // 连接腾讯云服务器失败
}

初始化接口 initSDK(SDKAppID, SDKConfig, listener) 包含三个必填的参数,分别是 SDKAppID,Config 和事件监听器。

SDKAppID

SDKAppID 即应用 ID,它是腾讯云 IM 服务用于区分客户帐号的唯一标识。每一个独立的 App 都建议申请一个新的 SDKAppID,不同 SDKAppID 之间的消息天然隔离,不能互通。
您可以在 即时通信 IM 控制台 查看所有的 SDKAppID,单击 创建新应用 即可创建新的 SDKAppID。

SDKConfig

参数 V2TIMSDKConfig 用于对 SDK 进行初始化配置,其中较常用的是对日志级别的设置,即 logLevel 参数,日志级别如下表所示:

日志级别 LOG 输出量
V2TIM_LOG_NONE 不输出任何 log
V2TIM_LOG_DEBUG 输出 DEBUG,INFO,WARNING,ERROR 级别的 log
V2TIM_LOG_INFO 输出 INFO,WARNING,ERROR 级别的 log
V2TIM_LOG_WARN 输出 WARNING,ERROR 级别的 log
V2TIM_LOG_ERROR 输出 ERROR 级别的 log
  • IM SDK 的日志默认存储于 /Library/Caches/ 目录下。
  • 从 V 4.7.1 开始,IM SDK 的日志开始采用微信团队的 xlog 模块进行输出,xlog 日志默认是压缩的,需要使用 python 脚本进行解压。
  • IM 本地日志默认保存 7 天;SDK 在初始化时,会自动清理 7 天之前的日志。
    • 获取解压脚本:若使用 Python 2.7,则单击 Decode Log 27 获取解压脚本;若使用 Python 3.0,则单击 Decode Log 30 获取解压脚本。
    • 在 Windows 或者 Mac 控制台输入如下命令即可对 log 文件进行解压,解压后的文件以 xlog.log 结尾,可以直接使用文本编辑器打开。
      python decode_mars_nocrypt_log_file.py imsdk_yyyyMMdd.xlog

事件监听器

V2TIMSDKListener 提供了网络状态以及用户信息变更的监听:

事件回调 事件描述 推荐操作
onConnecting 正在连接到腾讯云服务器 适合在 UI 上展示“正在连接”状态。
onConnectSuccess 已经成功连接到腾讯云服务器 -
onConnectFailed 连接腾讯云服务器失败 可以提示用户当前网络连接不可用。
onKickedOffline 当前用户被踢下线 此时可以 UI 提示用户“您已经在其他端登录了当前帐号,是否重新登录?”
onUserSigExpired 登录票据已经过期 请使用新签发的 UserSig 进行登录。
onSelfInfoUpdated 当前用户的资料发生了更新 可以在 UI 上更新自己的头像和昵称。
注意:

若收到 onUserSigExpired 回调,说明您登录用的 UserSig 票据已经过期,请更新后重新登录。如果继续使用过期的 UserSig,会导致 SDK 登录死循环。

登录

调用 V2TIMManagerlogin(userID, userSig) 函数可以进行登录,只有在 SDK 登录成功后,才能使用 IM SDK 的各项能力。

  • UserID: 建议只包含大小写英文字母、数字、下划线和连词符集中类型的字符,长度最大不超过32字节。
  • UserSig:IM SDK 登录票据,由您的业务服务器进行计算以保证安全,计算方法请参考 UserSig 后台 API
    注意:

    调用 IM SDK Login 成功登录后,将会开始计算 DAU,请根据业务场景合理使用 IM SDK Login 操作,避免出现 DAU 过高的情况。

    登录时机

    以下场景需调用登录:
  • App 启动后首次使用 IM SDK 的能力时。
  • IM SDK 抛出 onUserSigExpired 回调时,即登录票据已过期时,需要使用新的 UserSig 进行登录。
  • IM SDK 抛出 onKickOffline 回调时,即当前用户被踢下线时,可以通过 UI 提示用户“您已经在其他端登录了当前帐号,是否重新登录?” 如果用户选择“是”,就可以进行重新登录。

以下场景无需调用登录:

  • 用户的网络断开并重新连接后,不需要调用 login 函数,SDK 会自动上线。
  • 当一个登录过程在进行时,不需要进行重复登录。

多端登录

同样类型的两台手机不能同时登录一个帐号,例如两台苹果手机不能同时登录一个帐号。但是一台安卓手机和一台苹果手机会被认为是两端,可以同时登录。多端登录相关配置请参考 登录设置

登出

登出比较简单,使用 logout() 函数即可。