Commit f654d33e345f9fa6d4c4798dfb1abac51cfc172e

Authored by zhangxiaowen
1 parent f1f6abd5

no message

CNLiveMineModule/Classes/UserInfo/CNLiveInfoUpdateController.m
... ... @@ -261,39 +261,51 @@ static const CGFloat timeValue = 1.5;
261 261 QMUIAlertAction *action1 = [QMUIAlertAction actionWithTitle:@"拍照" style:QMUIAlertActionStyleDefault handler:^(__kindof QMUIAlertController *aAlertController, QMUIAlertAction *action) {
262 262 __strong typeof(weakSelf) strongSelf = weakSelf;
263 263 if(!strongSelf) return ;
264   - XFCameraController *cameraController = [[XFCameraController alloc] init];
265   - cameraController.isCanShootVideo = NO;
266   - cameraController.modalPresentationStyle = UIModalPresentationFullScreen;
267   - __weak XFCameraController *weakCameraController = cameraController;
268   - __weak typeof(self) weakSelf = self;
269   - cameraController.takePhotosCompletionBlock = ^(UIImage *image, NSError *error) {
  264 + strongSelf.navigationBar.right.userInteractionEnabled = YES;
  265 + __strong typeof(strongSelf) weakSelf = strongSelf;
  266 + [strongSelf getAVAuthorizationStatus:^{
270 267 __strong typeof(weakSelf) strongSelf = weakSelf;
271 268 if(!strongSelf) return ;
272   - strongSelf->_image = image;
273   - [strongSelf requestUpdateUserHeader:image];
274   - dispatch_async(dispatch_get_main_queue(), ^{
275   - [weakCameraController dismissViewControllerAnimated:YES completion:nil];
276   - });
277   - };
278   - [self presentViewController:cameraController animated:YES completion:nil];
279   - self.navigationBar.right.userInteractionEnabled = YES;
  269 + XFCameraController *cameraController = [[XFCameraController alloc] init];
  270 + cameraController.isCanShootVideo = NO;
  271 + cameraController.modalPresentationStyle = UIModalPresentationFullScreen;
  272 + __weak XFCameraController *weakCameraController = cameraController;
  273 + __weak typeof(strongSelf) weakSelf = strongSelf;
  274 + cameraController.takePhotosCompletionBlock = ^(UIImage *image, NSError *error) {
  275 + __strong typeof(weakSelf) strongSelf = weakSelf;
  276 + if(!strongSelf) return ;
  277 + strongSelf->_image = image;
  278 + [strongSelf requestUpdateUserHeader:image];
  279 +
  280 + dispatch_async(dispatch_get_main_queue(), ^{
  281 + [weakCameraController dismissViewControllerAnimated:YES completion:nil];
  282 + });
  283 + };
  284 + [self presentViewController:cameraController animated:YES completion:nil];
  285 + }];
  286 +
280 287 }];
281 288 QMUIAlertAction *action2 = [QMUIAlertAction actionWithTitle:@"从手机相册中选择" style:QMUIAlertActionStyleDefault handler:^(__kindof QMUIAlertController *aAlertController, QMUIAlertAction *action) {
282 289 __strong typeof(weakSelf) strongSelf = weakSelf;
283 290 if(!strongSelf) return ;
284 291 strongSelf.navigationBar.right.userInteractionEnabled = YES;
285   - TZImagePickerController *picker = [[TZImagePickerController alloc] initWithMaxImagesCount:1 delegate:strongSelf];
286   - picker.modalPresentationStyle = UIModalPresentationFullScreen;
287   - picker.allowPickingVideo = NO;
288   - picker.allowPreview = NO;
289   - __weak typeof(self) weakSelf = self;
290   - [picker setDidFinishPickingPhotosHandle:^(NSArray<UIImage *> *photos, NSArray *assets, BOOL isSelectOriginalPhoto) {
  292 + __strong typeof(strongSelf) weakSelf = strongSelf;
  293 + [strongSelf getPHAuthorizationStatus:^{
291 294 __strong typeof(weakSelf) strongSelf = weakSelf;
292 295 if(!strongSelf) return ;
293   - strongSelf->_image = [photos firstObject];
294   - [strongSelf requestUpdateUserHeader:[photos firstObject]];
  296 + TZImagePickerController *picker = [[TZImagePickerController alloc] initWithMaxImagesCount:1 delegate:strongSelf];
  297 + picker.modalPresentationStyle = UIModalPresentationFullScreen;
  298 + picker.allowPickingVideo = NO;
  299 + picker.allowPreview = NO;
  300 + __weak typeof(strongSelf) weakSelf = strongSelf;
  301 + [picker setDidFinishPickingPhotosHandle:^(NSArray<UIImage *> *photos, NSArray *assets, BOOL isSelectOriginalPhoto) {
  302 + __strong typeof(weakSelf) strongSelf = weakSelf;
  303 + if(!strongSelf) return ;
  304 + strongSelf->_image = [photos firstObject];
  305 + [strongSelf requestUpdateUserHeader:[photos firstObject]];
  306 + }];
  307 + [strongSelf presentViewController:picker animated:YES completion:nil];
295 308 }];
296   - [self presentViewController:picker animated:YES completion:nil];
297 309  
298 310 }];
299 311 QMUIAlertAction *action3 = [QMUIAlertAction actionWithTitle:@"保存图片" style:QMUIAlertActionStyleDefault handler:^(__kindof QMUIAlertController *aAlertController, QMUIAlertAction *action) {
... ... @@ -364,6 +376,58 @@ static const CGFloat timeValue = 1.5;
364 376 }];
365 377  
366 378 }
  379 +
  380 +- (void)getAVAuthorizationStatus:(void (^)(void))block{
  381 + AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
  382 + if (device) {
  383 + AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
  384 + switch (status) {
  385 + case AVAuthorizationStatusNotDetermined: {
  386 + [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {
  387 + if (granted) {
  388 + dispatch_sync(dispatch_get_main_queue(), ^{
  389 + block();
  390 + });
  391 + NSLog(@"用户第一次同意了访问相机权限 - - %@", [NSThread currentThread]);
  392 + } else {
  393 + NSLog(@"用户第一次拒绝了访问相机权限 - - %@", [NSThread currentThread]);
  394 + }
  395 + }];
  396 + break;
  397 + }
  398 + case AVAuthorizationStatusAuthorized: {
  399 + block();
  400 + break;
  401 + }
  402 + case AVAuthorizationStatusDenied: {
  403 + NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary];
  404 + NSString *app_Name = [infoDict objectForKey:@"CFBundleDisplayName"];
  405 + if (app_Name == nil) {
  406 + app_Name = [infoDict objectForKey:@"CFBundleName"];
  407 + }
  408 + NSString *messageString = [NSString stringWithFormat:@"请在iPhone的\"设置 - 隐私 - 相机\"选项中,允许%@访问你的相机", app_Name];
  409 + UIAlertController *alertC = [UIAlertController alertControllerWithTitle:nil message:messageString preferredStyle:(UIAlertControllerStyleAlert)];
  410 + UIAlertAction *alertA = [UIAlertAction actionWithTitle:@"好" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) {
  411 +
  412 + }];
  413 +
  414 + [alertC addAction:alertA];
  415 + [self presentViewController:alertC animated:YES completion:nil];
  416 + break;
  417 + }
  418 + case AVAuthorizationStatusRestricted: {
  419 + NSLog(@"因为系统原因, 无法访问相册");
  420 + break;
  421 + }
  422 +
  423 + default:
  424 + break;
  425 + }
  426 + return;
  427 + }
  428 + [QMUITips showError:@"未检测到您的摄像头" inView:self.view hideAfterDelay:timeValue];
  429 +}
  430 +
367 431 - (void)getPHAuthorizationStatus:(void (^)(void))block{
368 432 // 1.获取当前App的相册授权状态
369 433 PHAuthorizationStatus authorizationStatus = [PHPhotoLibrary authorizationStatus];
... ...