iOS: как проверить, включено ли географическое местоположение?

#ios

#iOS

Вопрос:

Я использую геолокацию в своем приложении для iPhone. Батарея разряжается быстрее, даже если я использовал геолокацию в течение нескольких секунд или если приложение работает в фоновом режиме.

Как я могу проверить, включена ли служба геолокации на моем устройстве iPhone? Это код, который я использовал:

     locationManager = [[CLLocationManager alloc] init]; // Create new instance of locMgr
    locationManager.delegate = self;

    locationManager.distanceFilter = kCLDistanceFilterNone; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;


    [locationManager startUpdatingLocation];
    NSLog(@"locationManager startUpdatingLocation");

    reverseGeocoder = [[MKReverseGeocoder alloc] initWithCoordinate:locationManager.location.coordinate];
    reverseGeocoder.delegate = self;
    [reverseGeocoder start];

    }

    ...

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


}


- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFailWithError:(NSError *)error
{
    NSLog(@"reverseGeocoder failed: %@", [error localizedDescription]);

}

- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark
{
    NSLog(@"locality %@", placemark.locality);
    location = [placemark.locality retain];
}
 

Ответ №1:

Чтобы проверить и посмотреть, какие приложения используют службы определения местоположения, перейдите в приложение «Настройки» в разделе «Службы определения местоположения», рядом с приложениями, которые использовали его недавно, появится серая стрелка, а рядом с приложениями, которые его активно используют, — фиолетовая стрелка.

введите описание изображения здесь

Чтобы уменьшить расход батареи, вы должны отключить CLLocationManager, как только у вас будет достаточно подходящее местоположение для ваших нужд, и в любое время, когда ваше приложение прекращает работу:

 -(void)appWillResignActive:(NSNotification*)notification
{
    // pause GPS when not active to save battery
    [locationManager stopUpdatingLocation];
}
 

Подпишитесь на уведомление где-нибудь, например, в вашем контроллере просмотра:

 [[NSNotificationCenter defaultCenter] addObserver:self 
     selector:@selector(appWillResignActive:)
     name:UIApplicationWillResignActiveNotification object:nil];