Вы правы в своем наблюдении. Услуги GPS - это энергоемкая работа. Это включает в себя включение бортовых радиоприемников и запрос доступных сотовых вышек, точек доступа Wi-Fi или спутников GPS, что может занять несколько секунд. Если стандартная служба определения местоположения работает в течение длительного времени, она может разрядить аккумулятор устройства.
iOS люди разработали решение для этого. Его названное изменение местоположения означает. Услуга определения местоположения с существенным изменением предлагает услугу определения местоположения с низким энергопотреблением для устройств с сотовыми радиостанциями. Эта услуга доступна только в iOS 4.0 и более поздних версиях, а также может активировать приложение, которое приостановлено или не работает. Как это работает, вы подписываетесь на эту услугу и запрашиваете iOS, чтобы сообщить вам, что «изменение местоположения» происходит от пользователя. Определение «значительного» не в ваших руках. Фактически, это то, что экономит аккумулятор. Вы не запрашиваете местоположение. Вы получаете обновления.
На мой взгляд, этот API превосходный и дает «справедливое» точное положение. Если вы не создаете приложение для отслеживания, этот API - это способ легко работать с батареей. Я не могу сказать вам количество приложений (заплатил & бесплатно) Я безжалостно удалил просто потому, что они злоупотребляли службами определения местоположения и разряжали мою батарею. Представьте, что iPhone пользователя не используется за полдня из-за разряженной батареи. Будьте очень внимательны к этому. Способ запуска этой службы является -
- (void)startSignificantChangeUpdates
{
// Create the location manager if this object does not
// already have one.
if (nil == locationManager)
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
[locationManager startMonitoringSignificantLocationChanges];
}
После этого, как и стандартных услуг определения местоположения, данные о местоположении доставляются на объект делегата. и вы можете использовать его на основе ваших прецедентов. Больше информации на Apple Location Docs
Вы действительно имеете в виду, что вы определяете местоположение с помощью GPRS? Это не невозможно, а довольно необычно. В любом случае, в какой частоте вы выбираете текущее местоположение? –
Предполагая, что вы говорите об использовании служб определения местоположения: одним из способов сокращения использования энергии является требование более низкой точности. Используйте самую низкую точность, которая работает для вашего приложения. Не запрашивайте обновления фона, если они вам не нужны, и не говорите, что вы являетесь руководством, когда вы этого не делаете. Кроме того, вы можете использовать инструменты для профилирования использования энергии. – nielsbot
Я использовал инфраструктуру CoreLocation. [LocationManager startLocationUpdates] & [locationManager stopLocationUpdates] –