이번에 TURTLE VOCA를 출시하면서 단어장에 사진을 넣을 수 있는 부분이 있는데 이 경우 이용자의 사진첩에 접근해야하기 때문에 이를 동의하는 과정이 꼭 필요하다.
이를 위해 이전에 구현되지 않았던 권한 안내를 구현하는 과정을 정리하고자 한다.
먼저 Info.plist파일에 안내가 나갈 문장을 넣어준다.
Privacy - Photo Library Usage Description
"단어장에 이미지를 추가하기 위해 사진 라이브러리에 접근하려고 합니다."
이와 같이 사진처럼 값을 넣어주면 된다.
그 다음 PHPickerView가 등장하는 메서드에 권한 안내가 나오는 알럿이 뜨도록 구현해준다.
func didSelectImage() {
PHPhotoLibrary.requestAuthorization(for: .readWrite) { [weak self] status in
DispatchQueue.main.async {
switch status {
case .authorized, .limited:
self?.presentPHPicker()
case .denied, .restricted:
self?.showPhotoLibraryAccessDeniedAlert()
case .notDetermined:
self?.didSelectImage()
@unknown default:
break
}
}
}
}
private func presentPHPicker() {
var configuration = PHPickerConfiguration()
configuration.filter = .images
configuration.selectionLimit = 1
let picker = PHPickerViewController(configuration: configuration)
picker.delegate = self
present(picker, animated: true, completion: nil)
}
private func showPhotoLibraryAccessDeniedAlert() {
let alert = UIAlertController(title: "사진 접근 권한이 없습니다",
message: "설정에서 사진 접근 권한을 허용해주세요.",
preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "설정으로 이동", style: .default) { _ in
if let settingsURL = URL(string: UIApplication.openSettingsURLString) {
UIApplication.shared.open(settingsURL)
}
})
alert.addAction(UIAlertAction(title: "취소", style: .cancel))
present(alert, animated: true)
}
이렇게 권한 설정 알럿을 뜰 수 있도록 구현하면 사용자가 이미지를 선택하려고 할 때 아직 권한을 결정하지 않은 경우 자동으로 권한 요청 알럿을 표시한다.
사진 라이브러리의 접근 권한을 확인하고 권한이 허용되었거나 제한적으로 허용된 경우에 PHPicker를 표시하게 된다.
권한이 거부되었을 경우, 사용자에게 설정으로 이동해 권한을 변경할 수 있는 알람을 표시한다.
'◽️ Programming > T I L' 카테고리의 다른 글
Hashable 을 사용하는 이유가 뭘까 (0) | 2024.07.25 |
---|---|
[.There 프로젝트 일지] - UI 구성하기 (3) | 2024.07.22 |
[Project 일지] 여행 기록 앱 만들기 (13) - image loading 속도 개선하기 (0) | 2024.07.08 |
[Project 일지] 여행 기록 앱 만들기 (12) - 2.0 버전 업데이트 진행(UI 수정 및 디테일 보완, 오류 수정) (0) | 2024.07.01 |
[Project 일지] 여행 기록 앱 만들기 (11) - Mate 업데이트 구현 (0) | 2024.06.29 |