call method

Future<NEResult> call(
  1. String accountId,
  2. NECallType callMediaType, [
  3. NECallParams? params
])

Implementation

Future<NEResult> call(String accountId, NECallType callMediaType,
    [NECallParams? params]) async {
  CallKitUILog.i(_tag,
      'call accountId:$accountId, callMediaType: $callMediaType, params:${params.toString()}), version:${Constants.pluginVersion}');
  if (accountId.isEmpty) {
    debugPrint("Call failed, userId is empty");
    return NEResult(
        code: NECallError.unKnow,
        message: NECallKitUI.localizations.callFailedUserIdEmpty);
  }

  // 使用 NECallParams 中的 pushConfig
  NECallPushConfig? pushConfig = params?.pushConfig;
  final permissionResult = await Permission.request(callMediaType);
  if (PermissionResult.granted == permissionResult) {
    final callResult = await NECallEngine.instance
        .call(accountId, callMediaType, pushConfig: pushConfig);
    CallKitUILog.i(_tag,
        "call result code: ${callResult.code} data: ${callResult.data?.toJson().toString()}");
    if (callResult.code == 0) {
      User user = User();
      user.id = accountId;
      user.callRole = NECallRole.called;
      user.callStatus = NECallStatus.waiting;

      CallState.instance.remoteUserList.add(user);
      _getUserInfo();
      CallState.instance.callType = callMediaType;
      CallState.instance.scene = NECallScene.singleCall;
      CallState.instance.selfUser.callRole = NECallRole.caller;
      CallState.instance.selfUser.callStatus = NECallStatus.waiting;
      CallingBellFeature.startRing();
      launchCallingPage();
      CallManager.instance.enableWakeLock(true);
    } else if (callResult.code == NECallError.stateCallCalling ||
        callResult.code == NECallError.stateCallOnTheCall) {
      CallManager.instance.showToast(NECallKitUI.localizations.userInCall);
    } else {
      CallKitUILog.i(_tag,
          "callResult.code: ${callResult.code}, callResult.msg: ${callResult.msg}");
    }
    CallKitUILog.i(_tag,
        "callResult.code: ${callResult.code}, callResult.msg: ${callResult.msg}");
    return NEResult(code: callResult.code, message: callResult.msg);
  } else {
    CallKitUILog.i(_tag, "Permission result fail");
    return NEResult(
        code: -1, message: NECallKitUI.localizations.permissionResultFail);
  }
}