只有在国家/地区发生变化时,在核心位置获取后台位置更新的最佳方法是什么?
答案 0 :(得分:1)
您可以使用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
之类的东西,这两种方法都会减少位置更新所消耗的电量。
答案 1 :(得分:0)
您要寻找的是 geofencing ,其中有很多不错的文章。您需要以任何方式实现类似
的功能 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)