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
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);
}
}