¿StartMonitoringForRegion realmente funciona?

He intentado utilizar startMonitoringForRegion durante un time, pero he tenido problemas para capturar los events de input / salida. Cuando lanzo la aplicación en el simulador y la moví a la location que especificé, obtengo 1 evento de ingreso, pero los events de input nunca más se activaron. ¿Alguien me puede decir si estoy haciendo correctamente?

test.h

#import <UIKit/UIKit.h> #import <CoreLocation/CoreLocation.h> @interface EWViewController : UIViewController<CLLocationManagerDelegate> { CLLocationManager *locman; } @end 

test.m

 - (void)viewDidLoad { if(locman == nil) locman = [[CLLocationManager alloc]init]; locman.delegate = self; CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(37.787359, -122.408227); CLRegion *region = [[CLRegion alloc]initCircularRegionWithCenter:coord radius:1000.0 identifier:@"SF"]; [locman startMonitoringForRegion:region desinetworkingAccuracy:kCLLocationAccuracyKilometer]; [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void) locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region { NSLog(@"ENTER"); } - (void) locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region { NSLog(@"EXIT"); } 

Sí, funciona, pero es muy poco precisos para el momento actual. (Lo probé en Rusia)

Te recomiendo que uses esto:

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

He estado usando la monitorización regional para una function de geocerca en mi aplicación durante aproximadamente 6 meses y la he encontrado muy precisa. Una vez que tenga todo conectado correctamente, se puede usar para rastrear los events de input y salida bastante bien.

Si bien puede get lecturas aún mejores y más precisas de -didUpdateToLocation, tendrá que cambiar la vida útil de la batería para getla. Si solo necesita actualizaciones de location ocasionales, debería estar bien. Si necesita una supervisión constante para ubicaciones específicas, la supervisión de la región es el path a seguir.

He descubierto que -startMonitoringForSignificantLocation no es preciso en absoluto y no es muy práctico. Se basa únicamente en las transiciones y la triangulación de la torre celular. Tampoco se puede usar para probar en el simulador por esta misma razón. Espero que algo de esta información te ayude.