我正在使用一个跟踪应用程序,因为我使用了位置管理器服务和
设置desiredAccuracy = kCLLocationAccuracyNearestTenMeters
和distanceFilter = 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不起作用。
请为我提供解决方案。
我的应用程序用于跟踪目的,如果我没有获得更新位置,那么它就没用了。
答案 0 :(得分:1)
您可以在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
];
}
答案 1 :(得分:0)
您可以通过以下链接获取帮助: Start Location Manager in iOS 7 from background task
以每隔5分钟的间隔更新您的位置。