我正在开发一个跟踪应用程序,因为我使用位置管理器服务并且
设置desiredAccuracy = kCLLocationAccuracyNearestTenMeters
距离过滤器 = 60.0。
我想提供后台支持。为此我
设置应用程序寄存器以进行位置更新,
应用程序从网络下载内容
在我的 info.plist 中。我把
[[UIApplication sharedApplication] setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum];
此代码位于 didFinishLaunchingWithOptions 方法中。
我也使用此方法来调用 startUpdatingLocation 位置管理器方法
- (void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
这一切都可以在 iOS 7 和 iPhone4 上运行
但是我在 iPhone4S 和 iPhone5 中还有另外两个设备,当设备非常理想时,应用程序处于后台,因此导航符号会消失,并且我的位置数据不会在服务器上更新。
当手机是理想的并且当我启动我的应用程序时它不在后台,我的应用程序从登录屏幕启动。
因此后台位置更新不适用于装有 iOS7 的 iPhone5 和 iPhone4S。
请为我提供解决方案。
我的应用程序用于跟踪目的,如果我没有获得更新的位置,那么它就没用了。
最佳答案
你可以在你的 AppDelegate.m 中添加这个方法
- (void)applicationDidEnterBackground:(UIApplication *)application
{
bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
NSLog(@"ending background task");
[[UIApplication sharedApplication] endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
timer = [NSTimer scheduledTimerWithTimeInterval:5
target:locationManager
selector:@selector(startUpdatingLocation)
userInfo:nil
repeats:YES
];
}
关于ios - iPhone 4s 和 iPhone 5 中的位置更新无法在后台模式 iOS 7.0 中运行,而手机处于理想状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19245807/