Experimenté con un proceso similar y obtuve el mejor uso posible de la siguiente manera utilizando cambios significativos de ubicación y monitoreo de la región. Después de muchas iteraciones, actualmente estoy experimentando muy poco efecto en la duración de la batería y en un procesamiento bastante confiable.
Utilizo cambios significativos de ubicación para activar un método que filtra los avisos, configura regiones solo para aquellos dentro de un radio limitado desde la posición actual.
Según mi experiencia, se pueden esperar cambios significativos de ubicación a unos 3-4 kilómetros de distancia. Esto puede variar mucho, pero no recuerdo haber visto mucho más que eso. Esto hace que el procesamiento sea muy poco frecuente en la ciudad, bastante predecible cuando un usuario se sube a la carretera. Intenté muchas variaciones del tamaño de la región, el radio de actualización y la configuración de sensibilidad de los servicios de ubicación.
Tenga en cuenta que el número de regiones que puede registrar es limitado. En ninguna parte encontré cuál es exactamente ese límite, pero algunos usuarios afirman que una sola aplicación no debe esperar registrar más de 10 regiones. Yo mismo no he encontrado ninguna referencia para corroborar esa cifra y a veces registro más de 10.
He jugado aumentando el radio y las distancias mínimas para actualizar cuando se ve que el dispositivo está viajando a velocidad de carretera durante duraciones Esa es una circunstancia en la que siento que puedo estar desperdiciando batería con ciclos de procesamiento innecesarios. En el uso real, no parece ser un problema, pero sigo tratando de maximizar la eficiencia en cualquier caso.
Mi experiencia en relación con sus preguntas específicas;
1- Para su caso, depende de qué tan cerca de una ubicación se tenga en cuenta para que el desencadenante lo notifique. Si está notificando cuando un usuario se encuentra a unas pocas millas o cuando el usuario llega a la ciudad, esto puede ser factible. Si desea disparar cuando un usuario se encuentra a unos pocos metros de una ubicación, esto no es para usted. En mi opinión, escuchar los cambios significativos de ubicación no suele ser un gran golpe para la duración de la batería. Por supuesto, la cantidad de procesamiento y actividad de la red que está haciendo al recibir el evento es otro factor. Compruebo qué tan lejos se ha movido el dispositivo, cuánto tiempo se ha aceptado desde la última ubicación. En mi caso, no es necesario actualizar todo cada vez y limito mi reacción en consecuencia.
2- Mi experiencia en cambios significativos de ubicación es la indicada anteriormente, pero toda la documentación deja en claro que no se trata de una distancia determinada sino de las condiciones y disponibilidad de las diversas señales utilizadas. Me imagino que en un entorno urbano es más predecible y menos en espacios abiertos. La mayor parte de toda mi experiencia ha sido en la primera.
3- A partir de búsquedas exhaustivas en Google, pasando por los documentos y mucha especulación informada, he llegado a la conclusión de que el cambio de ubicación significativo está determinado por una combinación mágica de todas las señales disponibles para la unidad. Hay señales wifi que transmiten sus posiciones con varios grados de precisión y las torres celulares generalmente saben dónde están. Los servicios de ubicación están utilizando todo esto junto con las intensidades de señal respectivas para decidir cuándo el dispositivo ha recorrido una "distancia significativa". Creo que está claro que el cálculo variará con las condiciones y está sujeto a cambios a medida que continúen mejorando el equilibrio entre la precisión y el uso de la potencia, de ahí las especificaciones vagas.
4- Como se indicó en la pregunta 1, hay factores a considerar que pueden determinar que pueda usar cambios de ubicación significativos solos, pero creo que la supervisión de la región es la más adecuada para su propósito en cualquier caso. Probablemente una combinación de ambos esté en orden. Lo estoy usando con gran satisfacción para mi propia aplicación.
5- Los cambios de ubicación significativos despertarán su aplicación. Debe seguir algunas pautas en sus métodos destinados a ejecutarse en segundo plano y tener en cuenta las limitaciones. Envuelva sus métodos de fondo en las llamadas a beginBackgroundTaskWithExpirationHandler y UIBackgroundTaskInvalid. Esté atento al bloqueo de hilos. Lea la documentación y las pautas de procesamiento de ubicación en su totalidad.
6- Mi recomendación es la anterior. Otras consideraciones están en su uso de los servicios de localización en general. Tendrá que crear una especie de controlador personalizado. Incluso cuando usa el servicio, no quiere reaccionar a todos y cada uno de los mensajes recibidos. Debe verificar el cambio, la precisión, la actualidad y todo ese jazz respondiendo tan a menudo como sea necesario. Encontré esta serie de publicaciones invaluables para obtener los conceptos básicos: Part 1 of 3 from the Long Weekend Website
7- Como mencioné anteriormente, tengo entendido que existe un límite de sistema para la cantidad de regiones que se pueden registrar. Supongo que, dado que no le dicen exactamente cuál es ese número, puede permitirle a su aplicación más o menos dependiendo de cuántas otras hayan sido configuradas por otras aplicaciones. Según mi experiencia, me registro regularmente y elimino entre 10 y 15 regiones dentro de mi radio establecido. Los puse en orden desde el más cercano al más lejano, ya que supongo que el último en ser eliminado o denegado por primera vez. Otras consideraciones: los identificadores de región son globales, por lo que si el suyo no es único, reemplazará la región anterior con el mismo nombre. -el tamaño de la región y los márgenes son configuraciones con las que debe experimentar para perfeccionar sus necesidades particulares.
¿De dónde provienen los mensajes? ¿Se entregan a través de la red? ¿Qué hay de las nuevas regiones para cada día? –