iOS CoreLocation,确定离开位置的用户

时间:2015-09-03 14:15:37

标签: ios core-location

我一直在使用iOS位置跟踪应用程序,我们已经找到了一种方法来确定用户何时离开某个地方,但我们是通过不断收听位置更新来实现的,这样就会耗尽我们的电池电量。

做这样的事最有效的方法是什么?我想获得类似于提醒应用程序的电池消耗。

欢迎任何想法!

谢谢!

3 个答案:

答案 0 :(得分:1)

您应该将应用设置为使用地理围栏。

您要查看的方法是CLLocationManager方法startMonitoringForRegion。您需要设置应用程序以询问用户是否有权监控位置更新。

如果系统未运行,系统将启动您的应用以提供区域更新。

答案 1 :(得分:0)

这取决于你的定义"留下一个地方"。但你可以使用

func startMonitoringSignificantLocationChanges()

在CLLocationManager上,为了在用户移动500米或更长时间(大致)通知according to Apple documention.

这将看电池寿命的责任转移到Apple的代码上,正如您可能想象的那样,这些代码已针对此任务进行了优化。

答案 2 :(得分:-1)

关注@ rschmidt的功能,以便在设备上启动位置更新。 通过保留名为' currentLocality'的变量来跟踪用户的当前位置。在委派CLLocationManager的课程中。

以下列方式实施CLLocationManagerDelegate

func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {

    var currentLocation = locations.last as? CLLocation

    // Getting current locality with GeoCoder
    CLGeocoder().reverseGeocodeLocation(currentLocation, completionHandler: {(placemarks, error) in
            if (error != nil) {
                println("reverse geodcode fail: \(error.localizedDescription)")
            }
            else {
                    let placeMark = placemarks.last as? CLPlacemark
                    if let latestLocality = placeMark!.locality {
                      if latestLocality != currentLocality {
                        // Locality has been changed, do necessary actions

                        // Updating current locality
                        currentLocality = latestLocality
                      }

                    }
            }
        })

}