0

我正在开发一个跟踪应用程序,因为我使用位置管理器服务和

设置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。

请为此提供解决方案。

如果我没有更新位置,我的应用程序将用于跟踪目的,所以它是无用的。

4

2 回答 2

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
    ];
}
于 2014-04-24T05:51:06.017 回答
0

您可以通过以下链接获得帮助: 从后台任务启动 iOS 7 中的位置管理器

每隔 5 分钟获取一次位置更新。

于 2013-10-08T11:17:00.080 回答