我一直在使用iOS位置跟踪应用程序,我们已经找到了一种方法来确定用户何时离开某个地方,但我们是通过不断收听位置更新来实现的,这样就会耗尽我们的电池电量。
做这样的事最有效的方法是什么?我想获得类似于提醒应用程序的电池消耗。
欢迎任何想法!
谢谢!
答案 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
}
}
}
})
}