在使用 IM SDK 的各项功能前,必须先进行初始化。
大多数场景下,在应用生命周期内,您只需要进行一次 IM SDK 初始化。
初始化 SDK 需要操作以下步骤:
V2TIMSDKConfig
对象。initSDK
初始化 SDK。下文我们将依次为您详细讲解具体的步骤内容。
SDKAppID 是腾讯云 IM 服务用于区分客户帐号的唯一标识。
我们建议每一个独立的 App 都申请一个新的 SDKAppID。不同 SDKAppID 之间的消息是天然隔离的,不能互通。
您必须拥有正确的 SDKAppID,才能进行初始化。
您可以在 即时通信 IM 控制台 查看所有的 SDKAppID,单击 创建新应用 按钮,可以创建新的 SDKAppID。
初始化 SDK 前,您需要初始化一个 V2TIMSDKConfig
(Android / iOS & Mac) 对象。该对象用于对 SDK 进行初始化配置,例如设置日志级别、设置日志监听回调。
IM SDK 支持多种日志级别,如下表所示:
日志级别 | 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 |
SDK 日志存储规则如下:
/sdcard/tencenet/imsdklogs/应用包名
目录下,4.8.50 及之后的版本存储于 /sdcard/Android/data/包名/files/log/tencent/imsdk
目录下。从 4.7.1 版本开始,IM SDK 的日志开始采用微信团队的 xlog 模块进行输出。xlog 日志默认是压缩的,需要使用 Python 脚本进行解压。
python decode_mars_nocrypt_log_file.py imsdk_yyyyMMdd.xlog
如果您需要实时监听 IM SDK 的日志,可以调用 setLogListener
(Android / iOS & Mac) 设置日志监听器。
设置成功后,SDK 会实时将日志信息通过此回调抛出。
注意:回调在主线程,日志回调可能比较频繁,请注意不要在回调里面同步处理太多耗时任务,可能会堵塞主线程。
配置 V2TIMSDKConfig
示例代码如下:
// 初始化 config 对象
V2TIMSDKConfig config = new V2TIMSDKConfig();
// 指定 log 输出级别
config.setLogLevel(V2TIMSDKConfig.V2TIM_LOG_INFO);
// 指定 log 监听器
config.setLogListener(new V2TIMLogListener() {
@Override
public void onLog(int logLevel, String logContent) {
// logContent 为 SDK 日志内容
}
});
SDK 初始化后,会通过 V2TIMSDKListener
抛出一些事件,例如连接状态、登录票据过期等。
我们建议您调用 addIMSDKListener
(Android / iOS & Mac) 接口添加 SDK 事件监听器,在对应回调中做一些逻辑处理。
V2TIMSDKListener
相关回调如下表所示:
事件回调 | 事件描述 | 推荐操作 |
---|---|---|
onConnecting | 正在连接到腾讯云服务器 | 适合在 UI 上展示 “正在连接” 状态。 |
onConnectSuccess | 已经成功连接到腾讯云服务器 | - |
onConnectFailed | 连接腾讯云服务器失败 | 提示用户当前网络连接不可用。 |
onKickedOffline | 当前用户被踢下线 | 此时可以 UI 提示用户 “您已经在其他端登录了当前帐号,是否重新登录?” |
onUserSigExpired | 登录票据已经过期 | 请使用新签发的 UserSig 进行登录。 |
onSelfInfoUpdated | 当前用户的资料发生了更新 | 可以在 UI 上更新自己的头像和昵称。 |
注意:如果收到
onUserSigExpired
回调,说明您登录用的 UserSig 票据已经过期,请使用新签发的 UserSig 进行重新登录。如果继续使用过期的 UserSig,会导致 IM SDK 登录进入死循环。
示例代码如下:
// sdkListener 类型为 V2TIMSDKListener
V2TIMManager.getInstance().addIMSDKListener(sdkListener);
操作完上述步骤后,您可以调用 initSDK
(Android / iOS & Mac) 进行 SDK 初始化。
示例代码如下:
// 1. 从即时通信 IM 控制台获取应用 SDKAppID。
// 2. 初始化 config 对象。
V2TIMSDKConfig config = new V2TIMSDKConfig();
// 3. 指定 log 输出级别。
config.setLogLevel(V2TIMSDKConfig.V2TIM_LOG_INFO);
// 4. 添加 V2TIMSDKListener 的事件监听器,sdkListener 是 V2TIMSDKListener 的实现类,如果您不需要监听 IM SDK 的事件,这个步骤可以忽略。
V2TIMManager.getInstance().addIMSDKListener(sdkListener);
// 5. 初始化 IM SDK,调用这个接口后,可以立即调用登录接口。
V2TIMManager.getInstance().initSDK(context, sdkAppID, config);
普通情况下,如果您的应用生命周期跟 IM SDK 生命周期一致,退出应用前可以不进行反初始化。
但有些特殊场景,例如您只在进入特定界面后才初始化 IM SDK,退出界面后不再使用,可以对 IM SDK 进行反初始化。
反初始化需要操作 2 步:
addIMSDKListener
添加了 SDK 监听器,此时请调用 removeIMSDKListener
(Android / iOS & Mac) 移除 SDK 监听器。unInitSDK
(Android / iOS & Mac)示例代码如下:
// 移除 V2TIMSDKListener 的事件监听器,sdkListener 是 V2TIMSDKListener 的实现类
V2TIMManager.getInstance().removeIMSDKListener(sdkListener);
// 反初始化 SDK
V2TIMManager.getInstance().unInitSDK();
在使用 IM SDK 登录、消息、群组、会话、关系链和资料、信令的功能前,必须先进行初始化。
本页内容是否解决了您的问题?