상세 컨텐츠

본문 제목

[SeSAC] 20220811_TIL (Privacy & Authorization, 권한, Apple Map, MapKit)

IOS/TIL

by 카키IOS 2022. 8. 11. 13:00

본문

1.Privacy & Authorization

사용자에게 data privacy에 대해 더 많은 통제권을 주는 것

 

2.사용자 허락 권한

info.plist - value에 정확하게 작성해야한다(이 권한을 사용하는 이유에 대해서 설명해야함) -> 얼럿 밑에 띄우는 권한 문구

 

위치데이터를 사용하는 앱
빨간 영역에 value값이 표시된다

 

개인 데이터 엑세스에 대한 문서

 

Accessing private data - Patterns - Human Interface Guidelines - Design - Apple Developer

Accessing private data To help people trust your app or game, you must be transparent about the privacy-related data and resources you require and how you use them. People use their devices in very personal ways and they expect apps to help them preserve t

developers.apple.com

 

3.MapKit

- 동작 순서 -

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의 동작 순서와 메서드간 로직을 이해한 뒤 메서드 목적에 맞는 코드 작성해보기

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

관련글 더보기