JLChen
2020-11-12 4f0271c6055ad0532555f2cf4135998f07485dfb
xamarin/ESVideoPhoneSDKXamarin/ESVideoPhoneSDKXamarin/ESVideoMonitorViewController.m
@@ -120,7 +120,7 @@
    UIView *TopView =  [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, APP_TOP_BAR_HEIGHT)];
    TopView.backgroundColor = HEXCOLORA(0xF9F9F9,1.0);
    [TopView addSubview:self.backButton];
    [TopView addSubview:self.moreButton];
//    [TopView addSubview:self.moreButton];
    [self.view addSubview:TopView];
    TopView.layer.shadowColor = [UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:0.25].CGColor;
    TopView.layer.shadowOffset = CGSizeMake(0,0.5);
@@ -445,12 +445,12 @@
        return;
    }
    //初始化视频采集Capture
    [self requestAccessForAVMediaType:AVMediaTypeVideo];
    if (isAccessVideo) {
        if(![_es initVideoCaptureSession]){
            NSLog(@"VideoCaptureSession 初始化失败");
        }
    }
//    [self requestAccessForAVMediaType:AVMediaTypeVideo];
//    if (isAccessVideo) {
//        if(![_es initVideoCaptureSession]){
//            NSLog(@"VideoCaptureSession 初始化失败");
//        }
//    }
    //初始化AudioSession
    _sessionHelper = [[AudioSessionHelper alloc]init];
    [_sessionHelper setAudioSession];
@@ -512,7 +512,12 @@
    //在viewDidLoad中 调用requestAccessForAVMediaType: 是为了节约初始化的时间
    //在viewDidAppear中调用requestAccessForAVMediaType: 是为了弹出提示打开权限的Alert
    //测试的时候发现如下情况:如果只把授权方法放到ViewDidAppear方法中处理,如果没有授权在初始化采集器时会失败。同样AlertView会因为View没有didLoad而导致present不出来
    if (!isAccessVideo || !isAccessAudio) {
//    if (!isAccessVideo || !isAccessAudio) {
//        [self requestAccessForAVMedia];
//    }
    if (!isAccessAudio) {
        [self requestAccessForAVMedia];
    }
}
@@ -831,30 +836,37 @@
    
    // 这里是考虑到用户没有授权,之后通过AlertAction跳转到设置页面授权后再回到APP时做的重新检测
    //跳转到设置页面,授权后返回页面,继续初始化采集器
    if (isAccessAudio && isAccessVideo) {
        return;
    }
    if (isAccessVideo && !isAccessAudio) {
    if(!isAccessAudio){
        [self requestAccessForAVMediaType:AVMediaTypeAudio];
        if (isAccessAudio) {
            [_es initAudioCaptureSession];
        }
    }else if (!isAccessVideo && isAccessAudio){
        [self requestAccessForAVMediaType:AVMediaTypeVideo];
        if (isAccessVideo) {
            [_es initVideoCaptureSession];
        }
    }else if (!isAccessVideo && !isAccessAudio){
        [self requestAccessForAVMediaType:AVMediaTypeAudio];
        [self requestAccessForAVMediaType:AVMediaTypeVideo];
        if (isAccessAudio) {
            [_es initAudioCaptureSession];
        }
        if (isAccessVideo) {
            [_es initVideoCaptureSession];
        }
    }
//    if (isAccessAudio && isAccessVideo) {
//        return;
//    }
//    if (isAccessVideo && !isAccessAudio) {
//        [self requestAccessForAVMediaType:AVMediaTypeAudio];
//        if (isAccessAudio) {
//            [_es initAudioCaptureSession];
//        }
//    }else if (!isAccessVideo && isAccessAudio){
////        [self requestAccessForAVMediaType:AVMediaTypeVideo];
////        if (isAccessVideo) {
////            [_es initVideoCaptureSession];
////        }
//
//    }else if (!isAccessVideo && !isAccessAudio){
//        [self requestAccessForAVMediaType:AVMediaTypeAudio];
////        [self requestAccessForAVMediaType:AVMediaTypeVideo];
//        if (isAccessAudio) {
//            [_es initAudioCaptureSession];
//        }
////        if (isAccessVideo) {
////            [_es initVideoCaptureSession];
////        }
//    }
}
- (void)willEnterBackground:(NSNotification *)notification {
    isBackGround = YES;
@@ -865,9 +877,9 @@
    if (!isAccessAudio) {
        [self requestAccessForAVMediaType:AVMediaTypeAudio];
    }
    if (!isAccessVideo) {
        [self requestAccessForAVMediaType:AVMediaTypeVideo];
    }
//    if (!isAccessVideo) {
////        [self requestAccessForAVMediaType:AVMediaTypeVideo];
//    }
    if (!iSAudioNotDetermined && iSVideoNotDetermined){
        [self creatAlertViewWith:@"授权请求" message:@"麦克风没有授权,请在设置中开启权限,否则将影响通讯功能。" cancel:@"确定"];
    }else if(iSAudioNotDetermined && !iSVideoNotDetermined){