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 | number | 是 | 应用ID,可在控制台中获取 |
loglevel | LogLevelEnum | 是 | 打印日志等级 |
listener | V2TimSDKListener | 是 | SDK监听器 |
返回模板
V2TimValueCallback<boolean>
{
code : number
desc : string
data : boolean
}
返回值详解
名称 | 数值类型 | 描述 |
---|---|---|
code | number | 请求结果错误码 |
desc | string | 请求结果描述符 |
data | boolean | 初始化结果 |
代码示例
import {
TencentImSDKPlugin,
LogLevelEnum,
V2TimSDKListener,
} from 'react-native-tim-js';
// 1. 从即时通信 IM 控制台获取应用 SDKAppID。
const sdkAppID = 0;
// 2. 添加 V2TimSDKListener 的事件监听器
const sdkListener: V2TimSDKListener = {
onConnectFailed: (code, error) => {
// 连接失败的回调函数
// code 错误码
// error 错误信息
},
onConnectSuccess: () => {
// SDK 已经成功连接到腾讯云服务器
},
onConnecting: () => {
// SDK 正在连接到腾讯云服务器
},
onKickedOffline: () => {
// 当前用户被踢下线,此时可以 UI 提示用户,并再次调用 V2TIMManager 的 login() 函数重新登录。
},
onSelfInfoUpdated: (info) => {
// 登录用户的资料发生了更新
// info登录用户的资料
},
onUserSigExpired: () => {
// 在线时票据过期:此时您需要生成新的 userSig 并再次调用 V2TIMManager 的 login() 函数重新登录。
},
onUserStatusChanged: (userStatusList) => {
//用户状态变更通知
//userStatusList 用户状态变化的用户列表
//收到通知的情况:订阅过的用户发生了状态变更(包括在线状态和自定义状态),会触发该回调
//在 IM 控制台打开了好友状态通知开关,即使未主动订阅,当好友状态发生变更时,也会触发该回调
//同一个账号多设备登录,当其中一台设备修改了自定义状态,所有设备都会收到该回调
},
};
// 3.初始化SDK
const initSDKRes = await TencentImSDKPlugin.v2TIMManager.initSDK(
sdkAppID, // SDKAppID
LogLevelEnum.V2TIM_LOG_DEBUG, // 日志登记等级
sdkListener // 事件监听器
);
if (initSDKRes.code === 0) {
//初始化成功
}