如何每15分钟找到当前位置

时间:2011-12-26 12:29:04

标签: objective-c ios4 ios5 ios-simulator ip

我开始使用ios-5开发项目, 我想每15分钟找到一个当前位置。

这是我的代码

- (void)applicationDidEnterBackground:(UIApplication *)application {

    locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self; 
    locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
    [locationManager startUpdatingLocation];
}

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
    NSDate *newLocationTimestamp = newLocation.timestamp;
    NSDate *lastLocationUpdateTiemstamp;
    int locationUpdateInterval = 60; //1min

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    if (userDefaults) {
        lastLocationUpdateTiemstamp = [userDefaults objectForKey:@"myevent"];
     if (!([newLocationTimestamp timeIntervalSinceDate:lastLocationUpdateTiemstamp] < locationUpdateInterval)) {
            NSLog(@"New Location: %@", newLocation);

            //[self locationManager:locationManager didUpdateToLocation:newLocation fromLocation:oldLocation];
            [userDefaults setObject:newLocationTimestamp forKey:@"myevent"];
        }
    }
}

我遇到的问题是这个代码在后台运行,但我在1分钟内每隔5分钟获得当前位置(这里是newLocation),即使我设置locationUpdateInterval = 60sec

我已经尝试了一切,但没有得到确切的解决方案。 提前谢谢!

1 个答案:

答案 0 :(得分:1)

我听到的轶事证据是,为了节省电池寿命,CoreLocation更新只会针对后台应用程序定期启动。

我在这里看到了一些关于这个主题的相关问题like this one

另外,请查看Apple's Location Awareness Programming Guide,特别是“启动重大更改位置服务”部分。