我正在开发一个跟踪应用程序,因为我使用位置管理器服务和
设置所需精度 = kCLLocation精度最近十米
和距离过滤器 = 60.0。
我想提供背景支持。 为此,我
设置应用寄存器以进行位置更新,
应用从网络下载内容
在我的信息列表中,我把
[[UIApplication sharedApplication] setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum];
此代码在 didFinishLaunchingWithOptions 方法中。
我也使用此方法进行呼叫启动更新位置位置管理器方法
- (void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
这一切都适用于带有iPhone4的iOS 7
但是我在iPhone4S和iPhone5中还有另外两个设备,当设备是理想的时,应用程序在后台,因此导航符号消失并且我的位置数据不会在服务器上更新。
当电话是理想的并且当我启动我的应用程序时,它不在后台,我的应用程序从登录屏幕启动。
所以后台位置更新不适用于具有iOS5的iPhone5和iPhone4S7。
请为此提供解决方案。
如果我没有得到更新的位置,我的应用程序用于跟踪目的,所以它是无用的。
您可以在 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 7中启动位置管理器
以每隔 5 分钟更新一次您的位置信息。