티스토리 뷰
-
iOS앱 실행 뒤 사용자가 사진첩권한을 거부한다면 어떻게 처리하는게 좋을까?
안녕하세요! 민군입니다 ^-^// 오늘은 쌈박한 포스팅 주제가 될 것 같아요. 입문자분들이 사진권한이 필요한 앱을 만들다보면 거치게 되는 고민이 있습니다. '만약 사용자가 사진첩 접근 권한을 거부하면 어떻게 하지??' 전 보통 두가지 방법을 생각할 것 같아요.
1. 초기 권한흭득을 거부하면, 앱을종료해버리기
2. 사용자의 권한 설정을 유도하기
이렇게 두가지가 될 수 있겠는데요. 저는 오늘 이중 2번째 방법, 사용자의 권한 설정을 유도하기를 구현해보도록 하겠습니다.
iOS앱 권한설정은 사진첩권한을 기준으로 구현해보겠습니다.
-
iOS앱 권한흭득을 유도하기 구현과정
제가 초짜라 잘 모르는건지 모르겠는데, 초기 앱 실행시에는 권한요청 문구를 띄울 수 있지만 2번째부터는 앱 권한흭득을 앱화면에서 바로 할 수 없더라구요. 제가 해보려는것은 사진첩 권한을 사용자가 흭득할 수 있도록 "사진첩권한 흭득 환경설정 창으로 이동 시키기"를 구현할 겁니다. 오늘 이런 문제를 해결해주실 선생님은 바로, "UIApplication" 클래스입니다. UIApplication 클래스의 정의를 한번 보자면...
The centralized point of contorl and coordination for apps running in iOS로, 대략 해석하자면 iOS에서 돌아가는 앱의 제어와 조화를 관제하는 중심점 이라고 설명할 수 있겠네요. 이 UIApplication을 통해 앱에서 사진첩 권한을 얻을 수 있는 환경설정 창으로 이동 시킬 수 있습니다.
위 코드는 사진첩 권한상태를 확인할 수 있는 변수를 만들어주는 것입니다.
PHPhotoLibrary.authorizationStatus()
위 상태값의 요소로는 .authorized(허용됨), .denied(거절됨), .notDetermined(결정안됨), .restricted(접근제한) 등이 있습니다.
이번의경우, 이미 앱초기 실행 시 사진첩권한을 거절한 뒤의 실행경우를 감안하기에 .denied(거절됨) 상태일 경우, UIAppllication을 활용해서 사진첩권한을 사용자가 흭득할 수 있게끔 유도할겁니다.
사진첩 권한흭등상태에 따른 분기를 제공하고 있습니다. 권한흭득 상태일 경우 사진첩기능을 사용하여 사진앨범을 뿌려주는데요, 권한거부상태일경우 빈테이블만 구현되도록 해둔 상태에서 setAuthAlertAction() 메서드를 호출시키도록 할 예정입니다. setAuthAlertAction() 메서드는 사진첩권한을 얻어야함을 알려주는 AlertActionController를 셋팅하고 띄운 뒤 UIApplication 클래스기능을 사용하여 환경설정으로 이동시킬 겁니다.
이어서 setAuthAllertAction() 메서드를 구현해봅니다.
먼저 사진첩권한을 얻어야함을 사용자에게 알릴 수 있도록 authAlertController: UIAlertController를 만들어줍니다. 선택버튼은 단 하나만 만들겁니다. 권한흭득에 대한 거절은 불가능합니다.
경고문구를 띄우는 UIAlertController에는 UIAlertAction이 들어갑니다. UIAlertAction은 ActionSheet(하단에서 올라오는 알람문구)나 alert형태(일반적인 중앙 경고문구)등의 스타일 설정도 가능한데 저는 ActionSheet가 아닌 alert방식을 사용합니다.
"네 알겠습니다." 라는 default방식의 일반 확인버튼을 만들어 UIAlertController에 추가시켰습니다. "네 알겠습니다."라는 버튼을 누르면 핸들러가 실행되는데 이때 사용자가 사진첩권한을 흭득할 수 있도록 UIApplication.openSettingsURLString URL로 이동하는 코드를 구현해줍니다.
if let appSettings = URL(string: UIApplication.openSettingsURLString){ UIApplication.shared.open(appSettings, options: [:], completionHandler: nil) } |
이제 한번 앱을 실행해서 목적대로 앱을 구동되는지 확인해보겠습니다.
-
앱 구동 및 기능구현 여부 확인
이미 제 앱은 초기에 사집첩 권한을 거부한 상태였습니다. 다시 실행하니 뜨는 UIAlertController, 선택은 하나뿐입니다. 당신은 앱 권한을 설정해야만 합니다(...) "네 알겠습니다."를 들어가봅니다.
사진첩 권한 설정창으로 이동을 합니다. 여기서 사용자는 사진첩 권한 흭득을 위해 "사진"을 들어가서 권한을 흭득해야합니다.
사진첩권한 "읽기 및 쓰기"를 설정한 뒤 다시 앱으로 돌아가 봅니다. 과연 앱의 사진첩 권한은 정상적으로 얻어졌을까요?
위와 같이 정상적으로 앱의 권한허용이 되었음을 알 수 있습니다. 현업에서도 이런 권한 미흭득시의 반응 처리는 중요할 것 같은데 이런 사용자입장을 고려한 기능 구현방식은 많이 알아두면 좋을 것 같습니다.
생각보다 간단하게 사용자가 권한을 얻어올 수 있도록 유도할 수 있었습니다. 다음에도 좋은 꿀팁과 함께 찾아오겠습니다. ^-^//
'iOS 개발' 카테고리의 다른 글
iOS앱 올코드 구현 중 내용맞게 테이블뷰 셀 높이 자동조절하기 (0) | 2019.06.18 |
---|---|
iOS Notification 노티 사용 시 주의할점(중복노티 방지) (0) | 2019.06.03 |
TextView의 여백, UIEdgeInsets로 줄여서 텍스트 열 맞추기 (0) | 2019.04.29 |
Enum Switch문으로 불필요한 default분기 제거하기 (0) | 2019.04.22 |
Xcode 코딩 중 "///" 주석으로 QuickHelp 활용하기 (0) | 2019.04.15 |
- Total
- Today
- Yesterday
- 프로그래머스
- uikit
- 알고리즘문제
- 백준swift
- swift
- publisher
- 알고리즘
- 부스트코스
- Protocol
- Collection
- swift string
- swift reduce
- swift문제
- 프로그래머스swift
- createML
- 백준알고리즘
- 김프매매
- swift알고리즘
- swift언어
- swift 문자열
- 자연어처리
- 컬렉션
- 스위프트
- CoreML
- Swift 알고리즘
- swift 기초
- 개발자문서
- SwiftUI
- 프로토콜
- ios
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |