位置更新无法在iPhone 4s和iPhone 5的后台模式iOS 7.0中工作,而iPhone则理想

时间:2013-10-08 10:54:50

标签: ios objective-c ios7 xcode5 iphone-5

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

设置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不起作用。

请为我提供解决方案。

我的应用程序用于跟踪目的,如果我没有获得更新位置,那么它就没用了。

2 个答案:

答案 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分钟的间隔更新您的位置。