안녕하세요! 블로그를 만든 후 첫 글을 게시하게 되었습니다!!😊
어떤 내용을 처음에 담을까 고민중에 제가 회사에서 처음 맡게 된 권한 체크를 공부해보려합니다!
먼저 제가 공부할 내용은 앱을 사용하면서 카메라나 앨범을 들어가는 경우가 있을때,
그 권한을 체크하고 앱에서 권한 설정에 따라 스위치로 현재 내 기기의 상태를 알고자 하는 동작을 해보려고 합니다.
회사에서 처음 맡았을때 많은 자료를 찾아보며 구현해보려했는데 생각보다 커스텀 한 자료들이 많이 나오지 않아
함께 나누면 좋겠다싶어 첫번째 글로 작성하게 됐습니다! 이제 시작하겠습니다!
우선 아이폰에서 권한을 설정할때는 INFO.PLIST라는 곳에서 권한을 사용하겠다는 설정을 해야하는데요
여기서 INFO.PLIST란 실행 패키지에 관한 필수 설정 정보가 있는 구조화된 텍스트 파일입니다.
INFO.PLIST에 들어가보시면 이렇게 Key값과 Value값을 사용할 수 있는데 지금은 테스트라서 간략히 적었지만
리젝사유가 될 수 있다하니 신중하게 Value값을 적어주시면 좋겠습니다!
INFO.PLIST설정이 끝나셨다면 다음은 Storyboard를 통해 간단한 UI를 만들어 보도록 하겠습니다!
저는 보시는것처럼 카메라와 앨범 권한을 나눠주는 라벨과 그에 따른 Switch를 만들어 놨습니다!
다음은 코드를 작성하기전에 필요한 라이브러리를 import해보겠습니다.
UIKit은 유아이를 구성하기위한 기본 라이브러리이며 AVFoundation은 앨범 권한을 위해
Photos는 카메라 권한을 위해 Import해주시길 바랍니다.
이제 코드를 작성하러 가보겠습니다!!
코드를 작성하기 전에 저는 카메라 권한과 앨범 권한을 다르다면 다른?방법으로 표현해봤습니다.
함께 보시죠!
먼저 카메라 권한입니다! AVCaptureDevice.requestAccess를 이용하여 권한 설정 알림을 불러옵니다.
저는 처음에 저 뒤에 들어오는 값들을 어떻게 적어야 할지 찾아보다가 권한체크를 했을 경우를 Bool[참,거짓] 형식으로 받아
True값을 갖게되면 Print를 찍도록 만들어봤습니다!
다음으론 authStatus라는 변수를 통해 현재 내 카메라 권한의 상태를 받도록 했습니다.
밑에서 앨범 권한은 각 상태에 따라 Switch/Case문을 이용하여 모든 값에 반환값을 줬다면
저는 실제 업무중에 Switch만 영향을 받고자 허용/불가상태만 받아서
스위치를 켜고 꺼봤습니다.
위 사진과 같이 카메라 권한 또한 애플에서 제공해주는 상태가 4가지를 선언하여 사용할 수 있습니다.
그럼 이부분은 앨범 권한을 통해 알아보도록 하겠습니다!
앨범 권한 체크는 보시는것과 같이 status라는 변수에 현재 기기상태를 받도록 해놓았고,
PHPhotoLibrary.requestAuthorization을 통해 권한 설정 알림을 불렀으며,
총 5가지 상태에 대해 Print문을 찍어봤습니다!
아이폰 유저들은 한번은 본적있을거 같은 5가지 상태에 대해 알아보면
.authorized = 항상 허용
.limited = 선택한 사진만 허용
(여기서 선택한 사진은 ios 14버전 이후로 추가된 기능입니다!)
.denied = 권한 거부
.restricted = 권한을 부여할 수 없는 상태
.notDetermined = 앱을 처음 시작하거나 처음으로 권한을 선택하는 경우
(이 부분은 대부분 다시한번 request를 해줍니다!)
해당 코드를 실행 시킨다면
먼저 카메라 권한을 위한 설정창이 뜨고
앨범 권한을 물어보는 설정창이 뜨게 됩니다.
(여기서 한글은 처음 Info.Plist에서 Value값으로 정해놓은 문구가 뜨게 됩니다!)
권한을 허용하고 불가하게 했을때 Switch를 확인할때는 앱을 껐다가 다시 열어야 확인할수 있는 이유는
ViewDidLoad라는 뷰가 열릴때 권한 상태를 조회하기 때문에 바꾼후에 화면 전환이 됐을때
상태를 조회하기 때문에 여러 화면을 사용하는 앱에서 쉽게 확인할 수가 있습니다.
지금까지 첫번째 일기를 작성해봤는데요 아직은 부족한 점이 많아 지적해주시면 수정하도록 하겠습니다!
권한을 확인하는 커스텀이 필요하신 분들은 한번 읽어보시면 좋을거 같습니다!
그럼 다음 글에서 또 뵙겠습니다!!😁
'[IOS][SWIFT]' 카테고리의 다른 글
[IOS][SWIFT] TextView와 TextField 값이 있을때 버튼 활성/비활성하기 (0) | 2021.09.13 |
---|---|
[IOS][SWIFT] UITextView 글자수 제한 및 글자수 세는 Label 만들기! (0) | 2021.09.09 |
[IOS][SWIFT]간단한 디자인으로 보는 스토리보드 UI와 SWIFT UI의 차이점 (0) | 2021.09.07 |
[IOS][SWIFT] 로컬 푸쉬 알림(Local Notification), UserNotifications사용하며 버튼을 이용한 알림음 변경 (0) | 2021.09.04 |
[IOS][SWIFT] 일기 시작! (2) | 2021.09.02 |