所以当我使用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];
}
答案 0 :(得分:1)
我怀疑当你使用4G时,位置更新仍然可以正常工作(尽管wifi三角测量使它们更精确但只有Apple知道如何实现私有),但是可能会出现问题通过4G连接快速或可靠地为服务器提供值。 (例如在伦敦,周围这么多人的地狱很慢)
您可以通过简单地将位置更新直接记录到视图上的某个UIlabel,而不是通过服务器基础结构来缩小调试范围。
作为最后的手段,我会确定
您将CLActivityType
属性设置为CLActivityTypeFitness
并且pausesLocationUpdatesAutomatically
设置为NO
。