我目前正在接收位置更新,并希望通过api调用定期向服务器发送更新。启动应用程序时一切正常,但后台更新确实不一致。
这是我目前正在尝试做的事情:
var lastUpdateTime: Double?
func locationManager(manager: CLLocationManager, didUpdateToLocation newLocation: CLLocation, fromLocation oldLocation: CLLocation)
{
userLocation = newLocation
if let lastUpdate = lastUpdateTime {
let thisUpdate = NSDate().timeIntervalSince1970
let timeInterval = thisUpdate - lastUpdate
if timeInterval > 60 {
if
let latitude = userLocation?.coordinate.latitude,
let longitude = userLocation?.coordinate.longitude
{
// Make API call to update location
lastUpdateTime = NSDate().timeIntervalSince1970
}
}
} else {
lastUpdateTime = NSDate().timeIntervalSince1970
}
}
我已经阅读了有关后台任务和位置更新的内容,但说实话,我有点迷失了。如果有帮助,api调用是通过Alamofire进行的,如果这会影响它的执行频率。
编辑:
添加了CLLocationManager选项......
locationManager.delegate = self
locationManager.distanceFilter = kCLDistanceFilterNone
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
locationManager.startUpdatingLocation()
答案 0 :(得分:0)
要在后台获取位置更新,应用应在项目设置的功能选项卡中启用“位置更新”后台模式。 除此之外,还需要将所需的后台位置键( NSLocationAlwaysUsageDescription )添加到info.plist文件中。如果这两件事情都正确完成,那么当调用'startUpdatingLocation'
时,app会在后台持续接收位置更新