반응형
이런 알림창 많이 보셨을겁니다.
앱에서 카메라나 위치정보 마이크등 시스템 자체의 기능에 엑세스하기 위해서는 권한을 얻어야합니다.
사용자한테서 권한을 얻는거죠.
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
반응형
'IOS (Swift, Objective-c)' 카테고리의 다른 글
[iOS] Swift Navigation Controller 추가하기 (0) | 2021.09.22 |
---|---|
[IOS] Swift 에서 OpenCV 사용하기 (OpenCV-4.1.0) (Xcode 12) (0) | 2021.09.21 |
[swift5] 함수 func 기본 사용법 (0) | 2021.08.26 |
[xcode] PlayGround 사용방법 (0) | 2021.08.26 |
[Swift5] swift 기초 문법 (0) | 2021.08.26 |
댓글