iOS 8核心位置每次都在WiFi上运行,间歇性地在4G上运行

时间:2015-01-29 21:17:52

标签: ios objective-c ios8 core-location

所以当我使用WiFi时它会起作用。但是在4G上,它只有在我使用Wifi并且它已经拥有该位置时才有效。很多时候没有WiFi,手机会说它使用我的位置,但它没有更新标签,也没有将坐标上传到服务器。这是代码:

- (void)viewDidLoad {
    [super viewDidLoad];

    if (nil == locationManager)
        locationManager = [[CLLocationManager alloc] init];
        locationManager = [[CLLocationManager alloc] init];
        locationManager.delegate = self;
        locationManager.desiredAccuracy = kCLLocationAccuracyBest;

    if ([self->locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) {
        [self->locationManager requestWhenInUseAuthorization];
    }

}

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
    CLLocation *newLocation = [locations lastObject];
    NSString *locationLat = [NSString stringWithFormat:@"%.8f", newLocation.coordinate.latitude];
    NSString *locationLong = [NSString stringWithFormat:@"%.8f", newLocation.coordinate.longitude];

    latLongLabel.text = [NSString stringWithFormat:@"Lat: %@ - Long%@",locationLat,locationLong];
    [self postLocation:locationLat secondArg:locationLong];

}
- (void)postLocation: (NSString *)latitudeString secondArg:(NSString *)longitudeString {

//POST COORDINATES TO MY SERVER

}

- (IBAction)startUpdating:(id)sender {

    [locationManager startUpdatingLocation];

}

1 个答案:

答案 0 :(得分:1)

我怀疑当你使用4G时,位置更新仍然可以正常工作(尽管wifi三角测量使它们更精确但只有Apple知道如何实现私有),但是可能会出现问题通过4G连接快速或可靠地为服务器提供值。 (例如在伦敦,周围这么多人的地狱很慢)

您可以通过简单地将位置更新直接记录到视图上的某个UIlabel,而不是通过服务器基础结构来缩小调试范围。

作为最后的手段,我会确定 您将CLActivityType属性设置为CLActivityTypeFitness 并且pausesLocationUpdatesAutomatically设置为NO