我的应用会在新的位置数据到达iOS 6后终止后自动唤醒,但不会在iOS 7上。
[[UIApplication sharedApplication] setBackgroundRefreshStatus]
是UIBackgroundRefreshStatusAvailable
。
在Info.plist
我设置UIBackgroundModes
的值为“location”。
CLLocationManager
以这种方式开始:
- (void) start {
if (locationManaher == nil) {
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
}
[locationManager startMonitoringSignificantLocationChanges]
}
- (void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
CLLocationCoordinate2D newCoordinate = newLocation.coordinate;
CLLocationCoordinate2D oldCoordinate = oldLocation.coordinate;
if (newCoordinate.latitude == oldCoordinate.latitude && newCoordinate.longitude == oldCoordinate.longitude) return;
float distance = [newLocation distanceFromLocation:oldLocation];
if (distance < distanceFilter) {
//send to server
}
}
有人知道问题出在哪里吗?
答案 0 :(得分:4)
这是7.0 iOS功能,如果用户手动关闭应用程序(从主页按钮双击),应用程序不会在位置更改时触发。
答案 1 :(得分:1)
不推荐使用locationManager:didUpdateToLocation:fromLocation:
方法,有效的iOS 6.您应该立即使用locationManager:didUpdateLocations:
。