NSPhotoLibraryUsageDescription
기본적인 Photo 앱 접근 권한 문구
NSPhotoLibraryAddUsageDescription
기존의 사진을 읽진 않고, 오직 새 사진을 저장만 하겠다는 권한 문구. iOS 11+
PHPhotoLibraryPreventAutomaticLimitedAccessAlert
iOS 14+
권한 물어볼 때 Select Photos 메뉴가 생겼고, 이걸 선택하면 권한 상태가 .limited가 됨
기본적으로 시스템이 어떤 사진을 선택할지 팝업을 앱 생명주기마다 띄워주는데 (limited-library selection once per app life cycle) 그렇게 자동으로 띄우는 걸 없애는 역할을 함. 그리고 개발자가 수동으로 적절한 시점에 코드로 띄워줄 수 있다고 함. → 자동으로 띄우는 걸 없애는 Key임. 값을 YES로 주면 됨
.. 그런데 위에서 말한 once per app life cycle이 정확히 언제인지 아직 모르겠음. 해석으로는 앱이 terminate된 후 다시 launch했을 때 일 것 같은데, 앱을 껐다 켜도 다시 물어보지 않음. 추후 확인 필요
import Photos
print(PHPhotoLibrary.authorizationStatus(for: .addOnly).rawValue)
print(PHPhotoLibrary.authorizationStatus(for: .readWrite).rawValue)
readWrite와 addOnly를 구분해서 권한 확인 가능
PHPhotoLibrary.requestAuthorization(for: .readWrite) { status in
// PHPhotoLibrary.requestAuthorization(for: .addOnly) { status in
switch status {
case .notDetermined:
break
case .restricted:
break
case .denied:
break
case .authorized:
break
case .limited:
break
@unknown default:
break
}
}
addOnly를 요청할지, readWrite를 요청할지 구분해서 요청함
두 구분된 권한 요청은 각각 할 수 있음
readWrite를 허락 받은 상태에서 addOnly를 요청하면
→ 프롬프트 없이 바로 status를 허락으로 내보내줌
readWrite를 거부 받은 상태에서 addOnly를 요청하면
→ 프롬프트를 띄워서 addOnly를 물어봄
addOnly를 허락 받은 상태에서 readWrite를 요청하면
→ 프롬프트를 띄워서 readWrite물어봄
addOnly를 거부 받은 상태에서 readWrite를 요청하면
→ 프롬프트를 띄워서 readWrite물어봄. 그리고 사용자가 (사용자 행동에 일관성은 없지만) readWrite를 허용을 한 경우, addOnly 권한도 같이 허용으로 바뀜