flutter/lib/IM/im_core.dart

52 lines
1.6 KiB
Dart
Raw Normal View History

2025-07-21 15:46:30 +08:00
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;
}
}
}