https://developer.apple.com/documentation/corelocation/responding_to_changes_in_authorization_status
"Receive and respond to changes in your app's authorization status in your delegate's method."
딜리게이트 메소드에서 앱의 권한상태에 대한 변경사항을 받고 응답합니다.
권한을 요청하거나 앱의 권한 상태가 변경되면 변경사항 처리를 위해 딜리게이트 객체의 locationManager(_:didChangeAuthorization:)
메소드를 사용할 수 있습니다. Listing 1은 앱이 권한을 받은 경우 앱의 위치 관련 기능을 활성화하는 것과, 권한이 어떠한 이유로든 거부되거나 제한될 때 해당 기능을 비활성화하는 딜리게이트 메소드의 구현을 보여주고 있습니다.
Listing 1 Responding to the app's authorization status
func locationManager(_ manager: CLLocationManager,
didChangeAuthorization status: CLAuthorizationStatus) { switch status {
case .restricted, .denied:
// Disable your app's location features
disableMyLocationBasedFeatures()
break
case .authorizedWhenInUse:
// Enable your app's location features.
enableMyLocationFeatures()
break
case .authorizedAlways:
// Enable or prepare your app's location features that can run any time.
enableMyAlwaysFeatures()
break
case .notDetermined:
break
}
}
Important
위치 서비스의 사용성은 언제든 변경될 수 있습니다. 사용자는 시스템 설정에서 위치 서비스를 비활성화할 수 있으며, 앱 하나에 비활성화할 수 있고 모든 앱에 대해 비활성화할 수도 있습니다. 앱이 실행중일 때 사용성 상태가 변경되면(포어그라운드와 백그라운드 상관없이) 시스템은 변경사항을 올리기 위해locationManager(_:didChangeAuthorization:)
메소드를 호출합니다.
위치 데이터에 접근하기 위해 앱이 필요한 권한을 결정합니다.
https://developer.apple.com/documentation/corelocation/choosing_the_location_services_authorization_to_request
https://velog.io/@panther222128/Choosing-the-Location-Services-Authorization-to-Request
사용자 위치에 접근 할 수 있도록 사용자에게 허가를 요청합니다.
https://developer.apple.com/documentation/corelocation/requesting_authorization_for_location_services
https://velog.io/@panther222128/Requesting-Authorization-for-Location-Services