Могу ли я получить доступ к базовому API местоположения, когда служба определения местоположения не разрешена? - PullRequest
0 голосов
/ 12 декабря 2011

Я хочу найти текущее местоположение в моем приложении, но вижу, что вся служба определения местоположения не разрешена.

@interface LoginViewController : UIViewController <CLLocationManagerDelegate>
{
    CLLocationManager* locationManager;
    CLLocation* currentLocation;
} //header file

//implementation header file
(void)loginButtonPressed:(id)aSender
{
    if (locationManager == nil)
    {
        locationManager = [[CLLocationManager alloc] init];
        locationManager.delegate = self;
        locationManager.desiredAccuracy = kCLLocationAccuracyBest;
        locationManager.distanceFilter = kCLDistanceFilterNone;
    }            

    [locationManager startUpdatingLocation];
}

//implementation CLLocationManagerDelegate
(void)locationManager:(CLLocationManager *)manager 
    didUpdateToLocation:(CLLocation *)newLocation 
    fromLocation:(CLLocation *)oldLocation
{
    NSLog(@"update location");
    if(self.currentLocation == nil)
    {
        self.currentLocation = newLocation;
        [locationManager stopUpdatingLocation];
    }
}

(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
    NSLog(@"fail with error");
    [locationManager stopUpdatingLocation];
    self.currentLocation = nil;
}

Когда locationManager вызывает startUpdatingLocation (предположим, служба определения местоположения не разрешена)locationManager не может получить текущее местоположение и вызывает didFailWithError: method.
В моем случае locationManager ничего не вызывает с iOS5, но вызывает didFailWithError: method с iOS4.Я не знаю, в чем моя вина.

1 Ответ

0 голосов
/ 19 декабря 2011

Нет, вы должны всегда проверять, разрешен ли мониторинг местоположения, прежде чем запускать какие-либо обновления местоположения.Если пользователь изменил свои предпочтения для вашего приложения, вы получите только ошибки вместо фактических обновлений местоположения.

Необходимо проверить, доступны ли обновления местоположения, и, если нет, уведомить пользователя, что ему нужно- включить службы определения местоположения для вашего приложения, чтобы оно работало должным образом.

...