IOS (Swift, Objective-c)

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

bryan.oh 2021. 9. 11. 08:22
반응형

 

 

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

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

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

 

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
반응형