startMonitoringSignificantLocationChanges仅调用一次委托

时间:2016-02-18 14:39:57

标签: ios location cllocationmanager

我遇到startMonitoringSignificantLocationChanges的问题。如果我为locationManager调用此方法,则locationManager:didUpdateLocations:方法只调用一次。现在,如果我在模拟器中启动一个驱动器(如所述here - 调试 - >位置 - >高速公路驱动器),则不再调用它。 Apple规定每隔500米甚至每5到15分钟调用一次。我等待,等待并等待没有成功。

这是小代码,我也是Github minimal example。当然也从不调用错误方法。它没有在汽车中的真实设备上进行测试,因为我认为它应该首先在模拟器中工作。我在这里缺少什么?

- (void)viewDidLoad {
    [super viewDidLoad];

    if(self.locationManager == nil){
        self.locationManager = [[CLLocationManager alloc] init];
    }

    // Set the delegate
    self.locationManager.delegate = self;
    [self.locationManager requestAlwaysAuthorization];

    [self.locationManager startMonitoringSignificantLocationChanges];

}

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations{
    CLLocation *currentLoc = [locations lastObject];
    NSLog(@"New Location: %f/%f, Locations: %lu", currentLoc.coordinate.latitude, currentLoc.coordinate.longitude,(unsigned long)[locations count]);
}

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{
    NSLog(@"Loc Error: %@", [error userInfo]);
}

1 个答案:

答案 0 :(得分:0)

好吧,我刚从Github下载了自己的最小项目,并尝试使用iPhone 5S模拟器。它有效。之前我只用6S试过它并且它没有用。现在将尝试使用设备6(S),并希望也可以在那里工作..

但也许会在不久的将来帮助某人:)