52 lines
1.6 KiB
Dart
52 lines
1.6 KiB
Dart
import 'package:logger/logger.dart';
|
|
import 'package:tencent_cloud_chat_sdk/enum/V2TimSDKListener.dart';
|
|
import 'package:tencent_cloud_chat_sdk/enum/log_level_enum.dart';
|
|
import 'package:tencent_cloud_chat_sdk/models/v2_tim_user_full_info.dart';
|
|
import 'package:tencent_cloud_chat_sdk/tencent_im_sdk_plugin.dart';
|
|
|
|
final logger = Logger();
|
|
|
|
class ImCore {
|
|
static bool _isInitialized = false;
|
|
|
|
static Future<bool> init({required int sdkAppId}) async {
|
|
if (_isInitialized) return true;
|
|
|
|
final res = await TencentImSDKPlugin.v2TIMManager.initSDK(
|
|
sdkAppID: sdkAppId,
|
|
loglevel: LogLevelEnum.V2TIM_LOG_ALL,
|
|
listener: V2TimSDKListener(
|
|
onConnectSuccess: () => logger.i("IM连接成功"),
|
|
onConnectFailed: (code, error) => logger.e("IM连接失败: $code $error"),
|
|
onKickedOffline: () => logger.w("IM被踢下线"),
|
|
onUserSigExpired: () => logger.w("UserSig 过期"),
|
|
onSelfInfoUpdated: (V2TimUserFullInfo info) {
|
|
logger.i("用户信息更新: ${info.nickName}");
|
|
},
|
|
),
|
|
);
|
|
|
|
if (res.code == 0) {
|
|
_isInitialized = true;
|
|
logger.i("IM SDK 初始化成功");
|
|
return true;
|
|
} else {
|
|
logger.e("IM SDK 初始化失败: ${res.code} - ${res.desc}");
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// 反向初始化
|
|
static Future<void> unInit() async {
|
|
if (_isInitialized) {
|
|
final res = await TencentImSDKPlugin.v2TIMManager.unInitSDK();
|
|
if (res.code == 0) {
|
|
logger.i("IM SDK 已反初始化");
|
|
} else {
|
|
logger.e("IM SDK 反初始化失败: ${res.code} - ${res.desc}");
|
|
}
|
|
_isInitialized = false;
|
|
}
|
|
}
|
|
}
|