español - gps ios swift
Cambio de ubicación significativo para geofencing (3)
Necesito entregar mensajes específicos al usuario en función de su proximidad a una ubicación específica y en algunas otras reglas (como si hay mensajes específicos para esa área). Por ejemplo, el usuario se sube al automóvil y se pone a trabajar. En el momento en que llega al trabajo, recibe un mensaje de algún tipo SI hay un mensaje para entregar. Esto es lo que estaba pensando (no hay código que intente diseñar el flujo mientras trabajo en otras partes de mi aplicación)
Escuche el cambio significativo de ubicación y, cada vez que eso ocurra, envíe la geolocalización del usuario al servidor para ver si hay algún mensaje entregado cerca de esa ubicación. No vayas. Eso consumiría demasiado la batería debido al uso excesivo de la radio.
Guarde las regiones del mensaje diariamente, y en cada cambio significativo de ubicación haga una prueba en los datos locales almacenados. Si algo coincide con el servidor de contacto THEN. Suena mejor en teoría.
Preguntas:
- ¿Puede el número 2 funcionar?
- ¿Cuál es la fidelidad del cambio significativo de ubicación? Me gustaría NO perder un mensaje en un área específica al no recibir notificaciones de un cambio de ubicación.
- ¿El cambio significativo de ubicación REALMENTE se basa en el cambio de la torre celular? (Lo leí en varias ocasiones que no es así)
- ¿El monitoreo de la región sería más adecuado para esta tarea? ¿Alguien lo está usando? ¿Cuál es el gasto de la batería y tiene una mejor fidelidad o par a cambio de ubicación significativa?
- si la aplicación finaliza, ¿un cambio significativo de ubicación realmente despertará mi aplicación? un poco dependiendo de eso.
- ¿Alguna sugerencia sobre cómo abordar esto de una manera que no he mencionado aquí?
Un millón de gracias a cualquiera que se tome el tiempo para aclarar algunas de estas cosas.
EDITAR: pregunta adicional 7. ¿El monitoreo de la región, teniendo una gran cantidad de regiones agregadas, tiene algún impacto en el sistema? Digamos que tiene 2 regiones vs 100 regiones?
- No lo creo Espere que obtenga los datos del servidor, pero luego se agrega una región. La aplicación no revisará esta región porque no existe nada (en los datos anteriores). Puede funcionar si recopila todas las áreas posibles, incluso si no existen mensajes para esa área. Obviamente, esto solo funcionará para áreas predefinidas.
- Consulte los videos de la WWDC 2011 para obtener más información. Sesión 500 a partir de los 17 min.
- No, también usa WiFi desde iOS5 (mira el video).
- absolutamente si ya conoces las regiones, entonces úsalas. Usted puede, por ej. proporcione la aplicación con una variedad de regiones (descargue esto cada 5 minutos o menos) y solo descargue los datos si el usuario accede a esta región. Recuerde que la región en la que se encuentra actualmente no será notificado. Asegúrese de actualizar periódicamente los datos de la región actual (si es una región relevante para el mensaje)
- Sí, lanzará tu aplicación, ya sea en segundo plano o completamente cerrada.
- también puedes descargar todos los mensajes incluso si no están en esta región. Y solo muéstrelos / pop-up si el usuario llega a la región. Pero esto solo es posible si los datos del mensaje no son demasiado. Por ejemplo, si planea usar los mismos mensajes para todas las personas (por ejemplo, "mire este hermoso edificio") sería demasiado para descargar todos los datos de todo el mundo.
- lo siento no sé. Supongo que es lo mismo que crear eventos de calendario, pero no estoy seguro.
Experimenté con un proceso similar y obtuve el mejor uso 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 puede esperar que ocurran cambios de ubicación significativos a unas 3-4 millas 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 la cantidad de regiones que puede registrar es limitada. 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 la velocidad de la carretera durante períodos de tiempo sustanciales. 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 se relaciona con tus preguntas específicas;
1- Para su caso, depende de qué tan cerca esté de una ubicación que desee considerar 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 cuanto a los cambios de ubicación significativos es como se indicó anteriormente, pero toda la documentación deja en claro que no es cuestión de una distancia determinada tanto como las condiciones y la 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 extensas búsquedas 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 podría usar cambios de ubicación significativos solos, pero creo que el monitoreo de la región es el más adecuado 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 tu 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: Parte 1 de 3 del sitio web de fin de semana largo
7- Como mencioné anteriormente, tengo entendido que hay un límite de todo el 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 regiones son globales, por lo que si el suyo no es exclusivo, 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.
Para 3:
¡Probé Android 4.3 Geofencing con WiFi OFF, y encontré que funciona bien!
Hay una nueva adición de geofencing de hardware y modo de escaneo Wi-Fi que ayuda.
Consulte: http://developer.android.com/about/versions/jelly-bean.html#43-optimized-location