1

仅当国家/地区发生变化时,核心位置获取后台位置更新的最佳方式是什么?

4

2 回答 2

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两者都将减少位置更新使用的电量。

于 2018-08-06T08:49:50.200 回答
0

您正在寻找的是所谓的地理围栏,有很多关于它的文章。您需要以任何方式实现功能,例如

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)

于 2018-08-06T08:31:18.270 回答