0811 새싹 29회차 정리 - iOS Privacy, CLLocation
iOS 앱 개발자 데뷔 과정 29회차
#1. Checklist
- iOS Privacy
Authorization
개인정보와 관련된 데이터와 리소스, 사용방법을 투명하게 공개해서 사용자와의 신뢰를 구축하는 것이 중요하다.
info.plist
info.plist 에서 권한 설정을 해야 하는데 올바르게 설정하지 않았을 경우 리젝 사유가 될 수 있다.
꼭 필요한 권한만 설정해야하며, 필요한 권한을 설정했더라도 권한에 대한 필요성 Description이 구체적이어야만 리젝이 되지 않는다.
Pricacy - Location 키의 종류는 6가지가 있는데, iOS 버전과 액세스 시점에 따라 선택한다.
- CLLocation
CLLocation은 사용법이 복잡해서, 최대한 흐름에 맞게 번호순으로 나열하면 아래와 같다.
1~3 : CLLocation을 사용하기 위한 준비
4~6 and 9 : CLLocationManagerDelegate 프로토콜을 통해, 위치나 권한이 업데이트 될 경우 호출될 메서드 구현
7 : CLAuthorizationStatus 를 통해 iOS 버전에 따른 분기 처리, iOS 위치 서비스 활성화 및 권한 상태 확인

8. 사용자의 권한 상태를 확인하고, 분기에 맞는 적절한 메서드 실행

didUpdateLocations
Location5 에서 사용자의 위치를 성공적으로 가지고 온 경우 실행되는 메서드
위치를 가져왔을 때 실행시킬 코드는 이 메서드 안에 넣으면 된다.
didFailWithError
Location5 에서 사용자의 위치를 가져오는 것에 실패했을 경우 실행되는 메서드
startUpdatingLocation / stopUpdatingLocation
사용자가 위치 권한을 허용해둔 상태일 때 (조건문) startUpdatingLocation을 호출한다.
호출할 경우 didUpdateLocations 메서드가 실행되고, 사용자의 위치가 업데이트된다.
그리고 didUpdateLocations 메서드가 실행되었을 때, 맨 마지막에 stopUpdatingLocation을 호출해 위치 업데이트를 멈춘다.
didUpdateLocations를 통해 위치 업데이트를 멈추지 않으면 너무 잦은 업데이트가 발생할 수 있으며, 이렇게 하더라도 제대로 기능한다.
locationManagerDidChangeAuthorization
Location9 에서 사용자의 권한 상태가 바뀔 때를 알려주는 메서드
iOS 14 이상에서, 사용자의 권한 상태가 변경되거나 위치 관리자를 생성할 때 호출된다.
해당 메서드 내에서 Location7 에서 구현한 checkUserDeviceLocationServiceAuthorization() 메서드를 호출한다.
그러면 iOS 위치 서비스 활성화 여부 확인 -> 사용자의 위치 권한 상태 확인을 다시 거치게 되며, notDetermined 상태일 때도 실행된다.
- MapView
단순 지도를 띄우는 작업과 위치 권한은 상관이 없다.
하지만 지도에 현재 위치 등을 표현하고 싶다면 위치 권한을 등록해야 한다.
MapViewDelegate
[Apple Developer] 참고 - 특정 작업이 완료될 때 어플리케이션에 알리는 역할의 메서드를 호출할 수 있다.
Annotation : MKPointAnnotation을 통해 지도에 핀을 추가할 수 있다.
SetRegion : 사용자 위치를 셋팅할 수 있다.
#2. Assignment
- TMDB 프로젝트 - 주변 영화관 탐색하기
1. 사용자의 현재 위치를 가져오는 로직 구현
위치 권한을 허용한 경우에는 사용자의 현재 위치를, 거부한 경우에는 청년취업사관학교 영등포 캠퍼스를 맵뷰의 중심이 되도록 설정
- 완료 -
2. 주변 영화관을 맵뷰 어노테이션으로 표시
최초 뷰컨트롤러 진입 시 전체 어노테이션을 보여주고, 액션시트를 통해 선택한 영화관만 보여주기
노력중...