handleBannerAccept method

Future<void> handleBannerAccept()

横幅接听按钮被点击(由 iOS 原生通过方法通道回调)

Implementation

Future<void> handleBannerAccept() async {
  CallKitUILog.i(_tag, 'CallManager handleBannerAccept');
  _bannerIsActive = false;
  // 先申请权限,再接听,权限拒绝则拒绝来电
  final permissionResult = await _runtimeAdapter.requestPermissions(
    CallState.instance.callType,
  );
  if (permissionResult != PermissionResult.granted) {
    _runtimeAdapter.stopRing();
    await reject();
    return;
  }
  final result = await accept();
  if (result.code == 0) {
    // 初始化摄像头和音频设备状态,确保 isCameraOpen 在页面打开前已设置正确
    // 否则 onPlatformViewCreated 里的 openCamera 条件判断会失败,导致本地画面不显示
    initAudioPlayDeviceAndCamera();
    _enterCallingPage('banner_accept');
  } else {
    // 接听失败(如断网),立即停止铃声并挂断,避免铃声一直响
    await _runtimeAdapter.stopRing();
    await reject();
  }
}