#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];