initSDK method

Future<bool> initSDK({
  1. required int sdkAppID,
  2. LogLevelEnum logLevel = LogLevelEnum.V2TIM_LOG_DEBUG,
  3. V2TimSDKListener? listener,
  4. String? initPath,
  5. String? logPath,
  6. required int uiPlatform,
  7. bool? showImLog,
  8. Map<String, dynamic>? networkInfo,
  9. Map<String, dynamic>? deviceInfo,
  10. int? mainThreadLooperPointer,
})

Implementation

Future<bool> initSDK({
  required int sdkAppID,
  LogLevelEnum logLevel = LogLevelEnum.V2TIM_LOG_DEBUG,
  V2TimSDKListener? listener,
  String? initPath,
  String? logPath,
  required int uiPlatform,
  bool? showImLog,
  Map<String, dynamic>? networkInfo,
  Map<String, dynamic>? deviceInfo,
  int? mainThreadLooperPointer,
}) async {
  if (_isInitSDK) {
    print('sdk has already been initialized');
    return true;
  }

  await CommonUtils.init(getSDKAppID: getSDKAppID, getLoginUser: getLoginUser);
  _sdkAppID = sdkAppID;
  _initInternalSDKListener();
  _initSimpleMessageListener();
  TIMMessageManager.instance.init();
  TIMConversationManager.instance.init();
  TIMGroupManager.instance.init();
  TIMCommunityManager.instance.init();
  TIMFriendshipManager.instance.init();
  TIMSignalingManager.instance.init();

  NativeLibraryManager.registerPort();

  addSDKListener(listener);

  setUIPlatform(uiPlatform: uiPlatform);

  setConfig(
    logLevel: logLevel,
    showImLog: showImLog,
  );

  if (networkInfo != null && networkInfo.isNotEmpty) {
    setNetworkInfo(networkInfo: networkInfo);
  }

  // APIType::FlutterFFI: 0x1 << 6;
  Map<String, dynamic> configMap = {};
  configMap["sdk_config_config_file_path"] = initPath ?? _getDefaultInitPath();
  configMap["sdk_config_log_file_path"] = logPath ?? _getDefaultLogPath();
  configMap["sdk_config_api_type"] = 64;

  if (deviceInfo != null && deviceInfo.isNotEmpty) {
    print("deviceInfo: $deviceInfo");
    configMap["sdk_config_device_type"] = deviceInfo["deviceType"];
    configMap["sdk_config_brand_type"] = deviceInfo["deviceBrand"];
    configMap["sdk_config_system_version"] = deviceInfo["systemVersion"];
  }

  if (mainThreadLooperPointer != null && mainThreadLooperPointer != 0) {
    configMap["sdk_config_main_looper_pointer"] = mainThreadLooperPointer;
  }

  Pointer<Char> jsonSdkConfig = Tools.string2PointerChar(json.encode(configMap));
  int initResult = NativeLibraryManager.bindings.DartInitSDK(sdkAppID, jsonSdkConfig);

  _isInitSDK = initResult == TIMResult.TIM_SUCC.value;

  return _isInitSDK;
}