setupEngine method

Future<void> setupEngine(
  1. String appKey,
  2. String accountId, {
  3. NEExtraConfig? extraConfig,
  4. NEGroupConfigParam? groupConfigParam,
})

Implementation

Future<void> setupEngine(
  String appKey,
  String accountId, {
  NEExtraConfig? extraConfig,
  NEGroupConfigParam? groupConfigParam,
}) async {
  CallKitUILog.i(
    _tag,
    'CallManager setupEngine(appKey:$appKey, accountId: $accountId, extraConfig: $extraConfig, groupConfigParam: $groupConfigParam)',
  );

  // 保存群呼配置参数
  _groupConfigParam = groupConfigParam;

  CallState.instance.unRegisterEngineObserver();
  CallState.instance.registerEngineObserver();
  CallState.instance.selfUser.id = accountId;
  // 获取 lckConfig,如果没有则使用默认配置(默认关闭)
  NELCKConfig? lckConfig = extraConfig?.lckConfig ??
      NELCKConfig(enableLiveCommunicationKit: false);

  var config = NESetupConfig(
    appKey: appKey,
    currentAccountId: accountId,
    enableJoinRtcWhenCall: false,
    initRtcMode: NECallInitRtcMode.global,
    desktopVideoRenderMode:
        Platform.isMacOS ? NEDesktopVideoRenderMode.platformWindow : null,
    lckConfig: lckConfig, // 传递 lckConfig 到 NESetupConfig
  );
  final result = await NECallEngine.instance.setup(config);

  if (result.code == 0) {
    CallKitUILog.i(
      _tag,
      'CallManager initEngine success with lckConfig: enable=${lckConfig.enableLiveCommunicationKit}, ringtone=${lckConfig.ringtoneName}',
    );
    // 预加载铃声文件,避免首次播放时铃声被截断
    CallingBellFeature.preloadRingFiles();
  } else {
    CallManager.instance.showToast(NECallKitUI.localizations.initEngineFail);
  }
}