IOS后台位置服务,因时间而异

时间:2014-11-25 08:14:32

标签: ios iphone background location

我正在使用位置服务器开发IOS应用程序。在应用程序中,我定期检查用户位置,并将位置详细信息发送到服务器。

以下是步骤:

1:App注册位置更新(在plist中)。

2:添加了如下代码:

-(void)startUpdating{
    locationManager = [[CLLocationManager alloc]init];
    locationManager.delegate = self;
    [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil];
    locationManager.pausesLocationUpdatesAutomatically = YES;
    [locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
    locationManager.distanceFilter = kCLDistanceFilterNone;
}

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
    dispatch_async(dispatch_get_main_queue(), ^{
        //call web service location 
        [self UpdateAppmyLocation:@"1"];
    });
   [locationManager allowDeferredLocationUpdatesUntilTraveled:200 timeout:(NSTimeInterval)90];

}

- (void)applicationWillResignActive:(UIApplication *)application
{
    [locationManager startUpdatingLocation];
}

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    [locationManager stopUpdatingLocation];
}

3:在didFinishLaunchingWithOptions中调用startUpdating方法。

一切正常,但每分钟调用didUpdateLocations:locations方法。我试图延迟一段时间,因此不会导致电池问题。

注意:使用iOS 7.1在iPhone 5上测试应用程序

请让我知道解决方案。

1 个答案:

答案 0 :(得分:1)

https://github.com/voyage11/Location

使用此代码。您可以在需要多长时间后调用它来设置时间。 我已经尝试了很多代码,但我发现这是最准确的并列出电池问题。这对于后台定位服务来说也很棒。