call method
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
var pushConfig = params?.pushConfig;
final permissionResult = await _runtimeAdapter.requestPermissions(
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) {
if (callResult.data?.callId != null &&
callResult.data!.callId.isNotEmpty) {
CallState.instance.currentCallId = callResult.data!.callId;
}
var 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;
_runtimeAdapter.startOutgoingRing();
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,
);
}
}