2012-07-20 11 views
10

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 (sin código todavía tratando de diseñar el flujo mientras trabajo en otras partes de mi aplicación)Cambio de ubicación significativo para geofencing

  1. Escucha significativa de cambio de ubicación y cada vez que ocurre enviar geolocalización del usuario para que el servidor ver si hay algún mensaje para ser entregado cerca de esa ubicación. No vayas. Eso consumiría demasiado la batería debido al uso excesivo de la radio.

  2. Guarde las regiones del mensaje a diario, y en cada cambio de ubicación importante haga una prueba en los datos locales almacenados. Si algo coincide con el servidor de contacto THEN. Suena mejor en teoría.

Preguntas:

  1. CAN Número 2 de trabajo?
  2. ¿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.
  3. ¿El cambio significativo de ubicación REALMENTE se basa en el cambio de la torre de la celda? (Lo leí en varias ocasiones que no lo es)
  4. ¿La supervisión de la región sería más adecuada 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?
  5. si la aplicación finaliza, un cambio significativo de ubicación realmente despertará mi aplicación? un poco dependiendo de eso.
  6. ¿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.

EDIT: 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?

+0

¿De dónde provienen los mensajes? ¿Se entregan a través de la red? ¿Qué hay de las nuevas regiones para cada día? –

Respuesta

27

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.

+0

gracias por su respuesta detallada. Me gustaría saber si estaría disponible al menos para algún trabajo de consultoría. Si este es el caso, envíeme un correo electrónico a mihai a pocorschi dot com – pocorschi

+1

"Una aplicación puede registrar hasta 20 regiones a la vez". [Consulte los documentos aquí] (http://developer.apple.com/library/ios/#documentation/CoreLocation/Reference/CLLocationManager_Class/CLLocationManager/CLLocationManager.html#//apple_ref/occ/instm/CLLocationManager/startMonitoringForRegion :) – Bach

+1

No creo que dijera eso cuando estaba comenzando. Veo que también actualizaron algunas diferencias en el rendimiento entre 4, 4S y 5 también. Puse mi última versión de mi controlador en github si estás interesado. https://github.com/dsdavids/TTLocationHandler –

3
  1. 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.
  2. Consulte el WWDC 2011 Videos para obtener más información Session 500 a partir de 17 min.
  3. No, también está usando WiFi desde iOS5 (ver el video).
  4. absolutamente si ya conoce las regiones y luego las usa. 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)
  5. Sí, iniciará su aplicación, ya sea en segundo plano o completamente cerrada.
  6. también puede descargar todos los mensajes, incluso si no se encuentran 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.
  7. lo siento no sé. Supongo que es lo mismo que crear eventos de calendario, pero no estoy seguro.
+0

entonces, ¿qué está diciendo es que tanto el cambio significativo de ubicación como el monitoreo de región usan SOLAMENTE wifi ahora e ignoran por completo el cambio de la torre de telefonía celular? – pocorschi

+0

No me refiero a que utilizan ambas técnicas, celular y wifi –

Cuestiones relacionadas