티스토리 뷰

반응형


앨범 접근 제한상태에서 이를 해지시키고, 권한을 취득하기 위한 예외처리가 필요하다.


다음 처리 방식은 권한이 없을경우 바로 시스템 설정페이지로 이동 시키거나, 사진 선택 매서드를 호출하도록 되어있다.


1
2
3
4
5
6
7
8
9
10
11
12
13

#import <Photos/Photos.h>


- (void)selectPhotos {
    
    [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
        
    } completionHandler:^(BOOL success, NSError *error) {
        
        if (error) {
            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
        }else{
            [self takePhoto];
        }
    }];
}




카메라 접근 제한 시 예외처리는 다음과 같이 하였다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- (void)selectCamera {
    if ([AVCaptureDevice respondsToSelector:@selector(requestAccessForMediaType: completionHandler:)]) {
        [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo
                                 completionHandler:^(BOOL granted) {
                                     if (granted) {
                                         dispatch_async(dispatch_get_main_queue(), ^{
                                             [self takePicture];
                                         });
                                     } else {
                                         [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
                                     }
                                 }];
    } else {
        [self takePicture];
    }
}




1. 권한이 없는 상태에서 권한을 승인할 경우 앱이 재실행된다.


2. 권한을 주지 않고 이전 앱으로 이동 시 변경되는 것은 없다.


참고 : Block Code를 통한 권한 체크를 했을 경우에는 권한 변경 시 자동으로 앱이 재실행 되지만, 매서드나, State값을 통한 if 문 처리 시에는 앱에서 아무런 변화도 없으며, 변경된 권한 또한 적용되지 않는 문제가 발생한다.



반응형
댓글
댓글쓰기 폼
공지사항