call method
Implementation
Future<NEResult> call(String accountId, NECallType callMediaType,
[NECallParams? params]) async {
CallKitUILog.i(_tag,
'CallManager call(userId:$accountId, callMediaType: $callMediaType, params:${params.toString()}), version:${Constants.pluginVersion}');
if (accountId.isEmpty) {
debugPrint("Call failed, userId is empty");
return NEResult(code: -1, message: "Call failed, userId is empty");
}
// 使用 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);
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.mediaType = 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 == 20002) {
CallManager.instance.showToast(CallKitUIL10n.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: "Permission result fail");
}
}