/ / Цел C мениджърът не може да получи текущо местоположение, винаги връща 0 - ios, цел-c, core-location

Целевата C locationManager не може да получи текущо местоположение, винаги връща 0 - ios, цел-c, core-location

Можете ли да прегледате следния код, да опитате locationManager с делегати и да опитате да върнете текущото местоположение на устройството.

Но винаги връща 0 (разрешено разрешение за местоположението)

.m

self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
self.locationManager.distanceFilter = kCLDistanceFilterNone;
[self.locationManager startUpdatingLocation];

if(IS_OS_8_OR_LATER) {
[self.locationManager requestAlwaysAuthorization];
}


CLAuthorizationStatus status = [CLLocationManager authorizationStatus];

if (status == kCLAuthorizationStatusAuthorizedAlways) {
// TODO: Handle status authorized always


} else if (status == kCLAuthorizationStatusNotDetermined) {
// TODO: Handle status not determined


} else {
// TODO: Handle other
}






- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {

//NSLog(@"newLocation: %@", newLocation);

}

-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{

//NSLog(@"Error: %@",[error description]);

}

info.plist

<key>NSLocationAlwaysUsageDescription</key>
<string>We would like to use your location.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>We would like to use your location.</string>

Отговори:

0 за отговор № 1

Моля, опитайте да се обадите на startUpdatingLocation след requestAlwaysAuthorization. и използват по-долу didUpdateLocations делегират методи.

if(IS_OS_8_OR_LATER) {
[self.locationManager requestAlwaysAuthorization];
}

[self.locationManager startUpdatingLocation];


- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{

_currentLocation = [locations objectAtIndex:0];
//do your stuff with the location

}

За тестване на симулатори - изберете симулатор и отидете на Debug -> Location -> Apple или City Run

За тестване на устройства Моля, проверете с картата, ако получавате текущо местоположение или не. Понякога устройството не получава актуално местоположение поради вътрешността на къщата.