Каков наилучший способ в основном местоположении получать обновления фонового местоположения только при изменении страны?
Получать обновления местоположения в фоновом режиме — только для смены страны iOS
Ответы (2)
Вы можете использовать reverseGeocodeLocation
из CLGeocoder
, чтобы получить текущую страну для вашего местоположения.
func locationManager(_ manager: CLLocationManager, didUpdateLocations objects: [CLLocation]) {
let location = objects.last!
let geocoder = CLGeocoder()
geocoder.reverseGeocodeLocation(location!) { (places, error) in
if(error == nil){
if(places != nil){
let place: CLPlacemark = places![0]
let country = place.country
// do something if its changed
}
} else {
//handle error
}
Но проблема будет заключаться в том, что вам нужно отслеживать местоположение, чтобы это произошло. Вы можете использовать startMonitoringSignificantLocationChanges
в качестве одного из вариантов или вы можете установить желаемую точность на что-то большое, например kCLLocationAccuracyThreeKilometers
, что уменьшит количество энергии, используемой обновлениями местоположения.
То, что вы ищете, называется геозона, об этом есть отличные статьи. В любом случае вам нужно будет реализовать такие функции, как
func locationManager(_ manager: CLLocationManager, didEnterRegion region: CLRegion)
(CLLocationManagerDelegate)
func locationManager(_ manager: CLLocationManager, didExitRegion region: CLRegion)
(CLLocationManagerDelegate)
open func requestAlwaysAuthorization()
(CLLocationManager)
func startMonitoring(for region: CLRegion)
(CLLocationManager)
didEnterRegion
- person Quoc Nguyen   schedule 06.08.2018