본문 바로가기
IOS (Swift, Objective-c)

[Swift] Camera/Photo Permission 카메라 권한 설정

by bryan.oh 2021. 9. 11.
반응형

 

 

이런 알림창 많이 보셨을겁니다.

앱에서 카메라나 위치정보 마이크등 시스템 자체의 기능에 엑세스하기 위해서는 권한을 얻어야합니다.

사용자한테서 권한을 얻는거죠.

 

Info.plist

프로젝트 폴더에 Info.plist 파일을 열어줍니다.

우클릭 > Add Row

Key 에는  아래와 같이 찾아서 입력해 주시고 (타이핑 하다보면 드랍다운 목록에 필터링 됩니다. 그거 선택해주시면됩니다. )

Privacy - Camera Usage Description
Privacy - Photo Library Usage Description

그리고 Value 칸에 알림창에 나오는 메시지를 입력해주시면 됩니다.

 

소스 수정

권한을 받기위해 소스에서 권한을 체크하는 함수를 추가합니다.

    func checkCameraPermission(){
       AVCaptureDevice.requestAccess(for: .video, completionHandler: { (granted: Bool) in
           if granted {
               print("Camera: 권한 허용")
           } else {
               print("Camera: 권한 거부")
           }
       })
    }

AVCaptureDevice 에서 오류가 발생하면 상단에 AVFoundation 을 import 해줍니다.

import AVFoundation

 

그리고 버튼을 눌렀을 때나, 앱이 실행됐을 때 이 함수를 호출해 주면 됩니다.

일단은 앱이 실행됐을 때 하기위해서 viewDidLoad() 안에서 위 함수를 호출해봅니다.

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        checkCameraPermission()
    }

 

위에서 봤던 카메라 사용 권한 팝업이 나옵니다.

 

앨범의 사진에 접근권한

import Photos
    func checkAlbumPermission(){
        PHPhotoLibrary.requestAuthorization( { status in
            switch status{
            case .authorized:
                print("Album: 권한 허용")
            case .denied:
                print("Album: 권한 거부")
            case .restricted, .notDetermined:
                print("Album: 선택하지 않음")
            default:
                break
            }
        })
    }
  • notDetermined : 아직 접근 여부를 결정하지 않은 상태
  • restricted : 앨범에 접근 불가능하고, 권한 변경이 불가능한 상태
  • denied : 앨범 접근 불가능한 상태. 권한 변경이 가능함.
  • authorized : 앨범 접근이 승인된 상태.

viewDidLoad() 에 순서대로 작성하면 순서대로 Alert 창이 뜨면서 권한을 요청합니다.

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        checkCameraPermission()
        checkAlbumPermission()
    }

 

이상입니다.

 

 

728x90
반응형

댓글