initSDK
功能介绍
初始化 SDK
初始化 SDK 需要操作以下步骤:
准备 SDKAppID。
设置 LogLevelEnum
调用 initSDK 初始化 SDK。
在 Android 平台上,IM SDK 的日志在 4.8.50 版本之前默认存储于 /sdcard/tencenet/imsdklogs/应用包名 目录下,4.8.50 及之后的版本存储于 /sdcard/Android/data/包名/files/log/tencent/imsdk 目录下。
从 4.7.1 版本开始,IM SDK 的日志开始采用微信团队的 xlog 模块进行输出。xlog 日志默认是压缩的,需要使用 Python 脚本进行解压。
获取解压脚本:若使用 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
如果收到 onUserSigExpired 回调,说明您登录用的 UserSig 票据已经过期,请使用新签发的 UserSig 进行重新登录。如果继续使用过期的 UserSig,会导致 IM SDK 登录进入死循环。
参数详解
参数名称 | 参数类型 | 是否必填 | 平台 | 描述 |
---|---|---|---|---|
sdkAppID | int | 是 | 全部 | 应用ID,可在控制台中获取 |
loglevel | LogLevelEnum | 是 | 全部 | 打印日志等级 |
listener | V2TimSDKListener | 是 | 全部 | SDK监听器 |
返回模板
V2TimValueCallback<bool>
{
code : int
desc : String
data : bool
}
返回值详解
名称 | 数值类型 | 描述 |
---|---|---|
code | int | 请求结果错误码 |
desc | String | 请求结果描述符 |
data | bool | 初始化结果 |
代码示例
// 1. 从即时通信 IM 控制台获取应用 SDKAppID。
int sdkAppID = 0;
// 2. 添加 V2TimSDKListener 的事件监听器,sdkListener 是 V2TimSDKListener 的实现类
V2TimSDKListener sdkListener = V2TimSDKListener(
onConnectFailed: (int code, String error) {
// 连接失败的回调函数
// code 错误码
// error 错误信息
},
onConnectSuccess: () {
// SDK 已经成功连接到腾讯云服务器
},
onConnecting: () {
// SDK 正在连接到腾讯云服务器
},
onKickedOffline: () {
// 当前用户被踢下线,此时可以 UI 提示用户,并再次调用 V2TIMManager 的 login() 函数重新登录。
},
onSelfInfoUpdated: (V2TimUserFullInfo info) {
// 登录用户的资料发生了更新
// info登录用户的资料
},
onUserSigExpired: () {
// 在线时票据过期:此时您需要生成新的 userSig 并再次调用 V2TIMManager 的 login() 函数重新登录。
},
onUserStatusChanged: (List<V2TimUserStatus> userStatusList) {
//用户状态变更通知
//userStatusList 用户状态变化的用户列表
//收到通知的情况:订阅过的用户发生了状态变更(包括在线状态和自定义状态),会触发该回调
//在 IM 控制台打开了好友状态通知开关,即使未主动订阅,当好友状态发生变更时,也会触发该回调
//同一个账号多设备登录,当其中一台设备修改了自定义状态,所有设备都会收到该回调
},
);
// 3.初始化SDK
V2TimValueCallback<bool> initSDKRes =
await TencentImSDKPlugin.v2TIMManager.initSDK(
sdkAppID: sdkAppID, // SDKAppID
loglevel: LogLevelEnum.V2TIM_LOG_ALL, // 日志登记等级
listener: sdkListener, // 事件监听器
);
if (initSDKRes.code == 0) {
//初始化成功
}