GPS местоположение / Регион мониторинга: обзор + как включить / выключить сигнал GPS (значок) в фоновом режиме [iOS] - PullRequest
0 голосов
/ 16 февраля 2012

Мне бы хотелось знать

A) если возможно полностью отключить использование GPS, когда приложение находится в фоновом режиме, и я прекращаю его (долгое нажатие на кнопку «Домой», нажмите на «X» соответствующей задачи), даже если "Мониторинг региона" активен, и в приложении есть соответствующий активный флаг .plst.

Также я бы хотел напомнить, как вы можете отслеживать местоположение устройства; Я думаю, что есть три способа: - [locationManager startUpdatingLocation] - [locationManager startMonitoringSignificantLocationChanges]; - [locationManager startMonitoringForRegion: требуемая область Точность: точность];

Б) Я не понимаю, могут ли они «бежать» / «не может» / «бежать» одновременно. например: startUpdatingLocation и startMonitoringSignificantLocationChanges являются взаимоисключающими, и это нормально, но как насчет startMonitoringForRegion?

C) Могу ли я использовать только startMonitoringForRegion без startMonitoringSignificantLocationChanges?

D) если я использую оба одновременно, могу ли я получить два уведомления при входе / выходе из контролируемого региона? Как я могу избежать этого? В этом случае, думаю, я должен реализовать что-то вроде этого:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation   {
 BOOL crossedBoundary = [self checkIfNewLocationHasCrossedMyMonitoredRegionBoundary:newLocation ];
if (crossedBoundary) NSLog(@"Crossed the boundary");
}

И

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region  {  NSLog(@"Crossed the boundary"); }

E) Как включить / выключить startMonitoringForRegion, пока приложение находится в фоновом режиме?

Большое спасибо. Я начинаю с примера "Apple" и "breadCrumb" Apple https://developer.apple.com/library/ios/#samplecode/Breadcrumb/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010048-Intro-DontLinkElementID_2

https://developer.apple.com/library/ios/#samplecode/Regions/Introduction/Intro.html

Ответы [ 2 ]

1 голос
/ 04 февраля 2014

Отвечая на ваши вопросы по порядку

Ответ A) Вы не можете отключить службы определения местоположения, насколько я пытался.

Ответ B) startMonitoringForRegion запущенслужба вне приложения, отслеживающая статус входа / выхода из региона.Его местоположение не обновляется из CLLocationManager , который обновляет текущее местоположение из служб определения местоположения.Он просто хранит отслеживаемые области относительно приложения.

Ответ C) Да, вы можете использовать их отдельно, потому что startMonitoringForRegion добавляет регионы для мониторинга в службах определения местоположения, где startMonitoringSignificantLocationChanges - это метод мониторинга, с помощью которого большие изменения в местоположении обрабатываются и обновляются до CLLocationManager с использованием locationManager: didUpdateLocations: .Но, как упоминалось в предыдущем ответе startMonitoringForRegion добавит регион для мониторинга в службу определения местоположения региона

Ответ D) Да, вы получите отдельные обновления местоположения.Но имейте в виду, что startMonitoringSignificantLocationChanges обновляет местоположение до CLLocationManger .Где startMonitoringForRegion обновляется только на пограничных переходах и не обновляет местоположение.

Ответ E) Вы должны добавить stopMonitoringRegion к appEnterBackground в AppDelegate * приложения.1033 *

0 голосов
/ 16 февраля 2012

Это прекратит звонить GPS

-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation*) newLocation
           fromLocation:(CLLocation *)oldLocation
{
[manager stopUpdatingLocation];

}
...