SeSAC iOS 데뷔과정 2기

0811 새싹 29회차 정리 - iOS Privacy, CLLocation

Lia's iOS 2022. 8. 11. 22:23
iOS 앱 개발자 데뷔 과정 29회차

 

 

 

 

#1. Checklist

- iOS Privacy

Authorization

개인정보와 관련된 데이터와 리소스, 사용방법을 투명하게 공개해서 사용자와의 신뢰를 구축하는 것이 중요하다.

 

info.plist

info.plist 에서 권한 설정을 해야 하는데 올바르게 설정하지 않았을 경우 리젝 사유가 될 수 있다.

꼭 필요한 권한만 설정해야하며, 필요한 권한을 설정했더라도 권한에 대한 필요성 Description이 구체적이어야만 리젝이 되지 않는다.

Pricacy - Location 키의 종류는 6가지가 있는데, iOS 버전과 액세스 시점에 따라 선택한다.

iOS11 이상, 앱이 포그라운드에서 실행 중일 때만 위치 정보에 액세스하는 경우

 

 

 

- 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. 주변 영화관을 맵뷰 어노테이션으로 표시

최초 뷰컨트롤러 진입 시 전체 어노테이션을 보여주고, 액션시트를 통해 선택한 영화관만 보여주기

노력중...

참고 자료