사용자에게 data privacy에 대해 더 많은 통제권을 주는 것
info.plist - value에 정확하게 작성해야한다(이 권한을 사용하는 이유에 대해서 설명해야함) -> 얼럿 밑에 띄우는 권한 문구
개인 데이터 엑세스에 대한 문서
1.Import
import MapKit
2. 위치정보 담당 변수 선언
class MapViewController: UIViewController {
@IBOutlet weak var mapView: MKMapView!
let locationManager = CLLocationManager()
.
.
.
.
}
CLLocationManager() -> 위치정보 사용의 시작과 끝을 담당
3.프로토콜 연결
override func viewDidLoad() {
super.viewDidLoad()
.
.
.
locationManager.delegate = self
.
.
.
}
4.프로토콜 선언
extension MapViewController: CLLocationManagerDelegate {
.
.
.
}
5.사용자의 위치정보를 받아온 경우와, 못받은 경우의 조건
extension MapViewController: CLLocationManagerDelegate {
//Location5. 사용자의 위치를 성공적으로 가지고 온 경우
.
.
.
//사용자의 위치를 못가지고 온 경우
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
print(#function)
}
}
6.iOS 버전에 따른 분기 처리 및 iOS 위치 서비스 활성화 여부 확인
extension MapViewController {
//iOS 버전에 따른 분기 처리 및 iOS 위치 서비스 활성화 여부 확인
func checkUserDeviceLocationServiceAuthorization() {
if #available(iOS 14.0, *) {
<#Code#>
}else {
<#Code#>
}
//iOS 위치 서비스 활성화 여부 체크 locationServicesEnabled()
if CLLocationManager.locationServicesEnabled() {
<#Code#>
} else {
<#Code#>
}
}
}
7.사용자의 위치 권한 상태 확인
func checkUserCurrentLocationAuthorization(_ authorizationStatus: CLAuthorizationStatus) {
switch authorizationStatus {
//처음 앱을 켰을 때
case .notDetermined:
<#Code#>
//없으면 앱이 꺼지게 된다.
//거부
case .restricted, .denied:
<#Code#>
//사용중
case .authorizedWhenInUse:
<#Code#>
//예외처리
default: print("DEFAULT")
}
}
8.사용자의 권한 상태가 바뀔 때를 알려줌
//4번 - 프로토콜 선언문 내
extension MapViewController: CLLocationManagerDelegate {
//iOS 14 이상: 사용자의 권한 상태가 바뀔때 호출, 위치 관리자 생성할 때 호출됨
func locationManagerDidChangeAuthorization(_ manager: CLLocationManager) {
<#Code#>
}
//iOS 14 미만
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
<#Code#>
}
}
MapKit의 동작 순서와 메서드간 로직을 이해한 뒤 메서드 목적에 맞는 코드 작성해보기
[SeSAC] 20220822_TIL (Realm) (0) | 2022.08.22 |
---|---|
[SeSAC] 20220816_TIL (Custom Framework, Access Control, UIView Animation, PageViewController) (0) | 2022.08.16 |
[SeSAC] 20220809_TIL (TableView + CollectionView) (0) | 2022.08.09 |
[SeSAC] 20220808_TIL (API관련 파일 관리하기) (0) | 2022.08.08 |
[SeSAC] 220805_TIL (클로저, Sync, Async) (0) | 2022.08.05 |