2

我已经查阅了大约 3 个不同的页面来了解它是如何工作的。但是,我真的可以使用一些帮助,因为我得到 kCLError = 15。这是我到目前为止所拥有的,然后我会解释更多。

locationManager = [[CLLocationManager alloc] init];
[locationManager setDelegate:self]
[locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
[locationManager startUpdatingLocation];

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    CLLocation *currentLocation = [locations lastObject];
    NSLog(@"%@",[locations lastObject];
    NSLog(@"%d",[CLLocationManager deferredLocationUpdatesAvailable]);
    [locationManager allowDeferredLocationUpdatesUntilTraveled:CLLocationDistanceMax timeout:CLTimeIntervalMax];

在此之后我有我的错误代码

-(void)locationManager:(CLLocationManager *)manager didFinishDeferredUpdatesWithError:(NSError *)error
{
    NSString *stringError = [NSString stringWithFormat:@"error: %@",[error description]];
    _whatMonitor.text = stringError;
}

所以,任何可以帮助我的人,我都会非常感激。我也有位置数组的计数,但这永远不会从 1 改变。我的理解是,在将应用程序关闭到主屏幕并锁定设备后,deferredUpdates 应该启动。我已经检查了 [locations count] 和它仍然是 1。我希望它比这更大..

我并不声称自己很擅长这一点,所以如果我犯了一个粗心的错误,请告诉我。我没有复制和粘贴,所以可能有一些小错别字。提前致谢。

我在 iPhone 5 上运行 iOS 6.0。

4

1 回答 1

3

对于重大更改服务和延迟位置更新,您必须移动系统以记录更新。您已指定 CLLocationDistanceMax,这是距离的高值。您可以指定更短的距离以获得更频繁的更改,例如,您可以指定每 100 米更改以触发更新,如下所示:

[locationManager allowDeferredLocationUpdatesUntilTraveled:CLLocation(100) timeout:CLTimeIntervalMax];

参考:http: //developer.apple.com/library/ios/#documentation/CoreLocation/Reference/CLLocationManager_Class/CLLocationManager/CLLocationManager.html

于 2013-08-07T00:26:03.117 回答