ios 오디오 + 비디오 권한 체크 함수
.h
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface PermissionsManager : NSObject <UIAlertViewDelegate>
//음성녹음 권한체크
-(void)checkMicrophonePermissionsWithBlock :(void(^)(BOOL granted))block;
//카메라 권한 상태 체크
-(void)checkCameraAuthorizationsStatusWithBlock :(void(^)(BOOL granted))block;
@end
.m
#import "PermissionsManager.h"
#import <AVFoundation/AVFoundation.h>
@implementation PermissionsManager
//오디오 권한 체크
- (void)checkMicrophonePermissionsWithBlock:(void (^)(BOOL granted))block{
NSLog(@"PermissionManager - checkMicrophonePermissionsWithBlock 메소드 진입");
//AVCaptureDevice에 미디어 타입으로 오디오 권한을 체크
NSString *mediaType = AVMediaTypeAudio;
[AVCaptureDevice requestAccessForMediaType:mediaType completionHandler:^(BOOL granted) {
//오류발생 시
if (!granted) {
//UI 변경 시 메인쓰레드 사용
dispatch_async(dispatch_get_main_queue(), ^{
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"오디오 권한"
message:@"설정에서 Microphone 권한을 허용해주세요."
delegate:self cancelButtonTitle:@"OK"
otherButtonTitles:@"Settings", nil];
alert.delegate = self;
[alert show];
});
}
if (block != nil) {
block(granted);
}
}];
}
//카메라 권한 체크
- (void)checkCameraAuthorizationsStatusWithBlock:(void (^)(BOOL granted))block{
NSLog(@"PermissionManager - checkCameraAuthorizationsStatusWithBlock 메소드 진입");
//AVCaptureDevice에 미디어 타입으로 오디오 권한을 체크
NSString *mediaType = AVMediaTypeVideo;
[AVCaptureDevice requestAccessForMediaType:mediaType completionHandler:^(BOOL granted) {
//오류발생 시
if (!granted) {
//메인ui 바꿀때는 메인쓰레드 사용
dispatch_async(dispatch_get_main_queue(), ^{
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"카메라 권한"
message:@"설정에서 카메라 권한을 허용해주세요."
delegate:self cancelButtonTitle:@"OK"
otherButtonTitles:@"설정", nil];
alert.delegate = self;
[alert show];
});
}
if (block != nil) {
block(granted);
}
}];
}
//설정 페이지 열어주기
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
NSLog(@"PermissionManager - clickedButtonAtIndex 메소드 진입 - 설정 페이지 열기");
if (buttonIndex == 1) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
}
}
@end
'ios 뽀개기 > objective-c' 카테고리의 다른 글
UIView 커스터마이징 & 오디오 비디오 사진 뷰어 (0) | 2018.12.28 |
---|---|
ios 저장 용량 계산 (0) | 2018.12.27 |
FileManager (0) | 2018.12.20 |
audiosessionQueue play - 코어오디오 재생하기 (0) | 2018.12.19 |
ios audiosessionqueue 파일 재생 시간 구하는 두가지 방법 (0) | 2018.12.19 |
댓글