iphone - usage - ¿Cómo puedo deshabilitar cualquier objeto CLRegion registrado con-startMonitoringForRegion?
location when in use usage description (3)
Estoy usando un controlador de navegación para mostrar una lista de geo-cercas disponibles para el usuario. En la parte superior hay un interruptor de encendido / apagado global que me gustaría usar para deshabilitar cualquier valla registrada con CoreLocation -startMonitoringForRegion.
Mis vallas parecen estar registrándose bien y funcionando en su mayor parte, pero no importa cuántas veces las deshabilite individualmente, todavía obtengo la flecha de ubicación púrpura que indica que el sistema todavía está monitoreando mi ubicación y / o cercas.
Cuando deshabilito mis cercas individualmente, así es como lo hago.
CLLocationCoordinate2D coord;
coord.latitude = [[settingsData valueForKey:@"latitude"] doubleValue];
coord.longitude = [[settingsData valueForKey:@"longitude"] doubleValue];
CLLocationDistance radius = [[settingsData valueForKey:@"radius"] intValue];
CLRegion *region = [[CLRegion alloc] initCircularRegionWithCenter:coord radius:radius identifier:[settingsData valueForKey:@"name"]];
// remove this fence from system monitoring
[locationManager stopMonitoringForRegion:region];
[region release];
He revisado toda la documentación de Apple sobre CoreLocation y el uso de estos métodos y estoy al final de mi cuerda.
He intentado llamar a [locationManager monitoredRegions];
pero solo devuelve la cerca activa y solo cuando tengo la vista de detalles cargada. No puedo llamarlo a ningún otro lugar de mi programa y hacer que devuelva cualquiera de mis vallas, aunque sé que deberían estar activas. Si alguien tiene algún consejo sobre dónde ir a continuación, soy todo oídos.
O, una solución más simple:
for (CLRegion *monitored in [locationManager monitoredRegions])
[locationManager stopMonitoringForRegion:monitored];
Ok, creo que puedo responder mi propia pregunta aquí finalmente. ¿Significa esto que puedo reclamar mi propia recompensa? :RE
En primer lugar, la flecha de ubicación persistente parece ser un error de iOS. He encontrado varias historias por ahí con el mismo problema. Así que no hay mucho que pueda hacer al respecto por ahora.
En lo que respecta a la eliminación de todas mis regiones a la vez, tengo esto ahora.
NSArray *regionArray = [[locationManager monitoredRegions] allObjects]; // the all objects is the key
for (int i = 0; i < [regionArray count]; i++) { // loop through array of regions turning them off
[locationManager stopMonitoringForRegion:[regionArray objectAtIndex:i]];
}
Pude mostrar mi matriz y probé que estaban todos allí. Otro chequeo después de quitar los programas se han ido todos. ¡¡Uf!! El problema de la flecha de ubicación sigue dependiendo de la versión de iOS que esté ejecutando. No puedo, supongo. Si tiene usuarios, asegúrese de informarles que la flecha morada no es su culpa. Para más información sobre el tema, puede comenzar aquí. GetSatisfaction Buena suerte.
Sí, es un error de iOS. Eliminar y reinstalar la aplicación no ayuda. La única forma en que logré deshacerme del problema es restableciendo las advertencias de ubicación