2011-02-18 12 views
8

estamos creando una aplicación con ubicación habilitada donde los usuarios usan esta aplicación para registrar ciertos eventos en el campo.Garantizando la fecha/hora correctas

La parte importante de los datos del evento es cuando ocurre un evento. Este no es un problema cuando el usuario está en línea, pero también admitimos situaciones cuando el usuario está fuera de línea (recordando & luego sincronizando eventos).

Puede haber situaciones en las que los usuarios están desconectados y cambian la hora en el teléfono, por lo que los tiempos de los eventos se registran de manera incorrecta.

Entonces, ¿cuál sería la mejor manera de asegurar que obtengamos una hora correcta, independientemente de las acciones del usuario, dado que el dispositivo podría estar fuera de línea. Algunas ideas:

  1. GPS time. ¿Es posible adquirirlo?
  2. ¿Cambios de tiempo del sistema de seguimiento realizados por el usuario?
  3. ¿Alguna otra idea?

Nota: El tiempo necesita segunda precisión, exactitud aproximadamente minuto estaría bien.

Nota 2: estamos creando aplicaciones móviles para Android y iPhone, por lo que estoy interesado en soluciones genéricas y también soluciones específicas para cualquiera de esas dos plataformas.

+0

Creo que las redes GSM pueden proporcionar la hora actual y muchas lo tienen. Entonces, si el teléfono está en una red, debería sincronizarse con esa hora. –

+0

Esto no es un problema cuando el dispositivo está en línea; podemos verificar la hora en nuestro servidor cuando se envían los eventos. El problema solo surge cuando el dispositivo está fuera de línea. –

+0

Peter: disculpe el abuso de este comentario, pero no puedo encontrar otra forma de comunicarme con usted. No puedo publicar un comentario en la entrada de su blog sobre el análisis de los datos de usuario de SO. Publicar y obtener una vista previa de ambos simplemente recarga la página. Las cookies están activadas para blogspot, tengo una cuenta de google.com. Supongo que también se requieren cookies para algunos terceros dominios adicionales, pero no hay forma de saberlo. El comentario está aquí; http://slashdot.org/comments.pl?sid=2328930&cid=36789036 –

Respuesta

2

Yo, personalmente, no me preocuparía tanto acerca de este escenario. La probabilidad de que alguien cambie intencionalmente el tiempo en su Android (que periódicamente se sincroniza a través de un servidor de tiempo automáticamente) mientras estoy fuera de línea me parece muy poco. Habiendo dicho eso, la única forma en que podría ver la compensación de esto es mantener un servicio ejecutándose en segundo plano que mantenga una cuenta corriente de los segundos transcurridos desde que se registraron los datos de ubicación fuera de línea. Una vez cargados en sus servidores, puede usar los segundos transcurridos para calcular una compensación de tiempo de la hora UTC actual. Es mucho por lo que pasar, pero funcionaría.

El tiempo de GPS es una idea interesante, pero Android permite a los usuarios del SDK enviar ubicaciones simuladas a sus dispositivos. No estoy seguro de que pueda realizar un seguimiento fiable de los cambios en la hora del sistema, e incluso si pudiera, los capturaría después del hecho sin el contexto en tiempo real actual.

+0

Bueno, las compañías que usan esta aplicación requieren que sus empleados la usen cuando están en el campo: comienzan a trabajar, dejan de trabajar, etc. Por lo tanto, hay algún incentivo de los empleados para modificarlo. Especialmente si se encuentra una laguna. –

+0

Un buen punto acerca de la creación de ubicaciones simuladas de GPS. Verificará si esto puede ser detectado. –

+0

Sí, puedo ver cómo el fraude puede ser extremadamente sensible en una situación como esa. Considere entonces que en mi escenario todavía es posible matar los servicios en segundo plano. No estoy seguro de si puede minimizar el impacto de eso al persistir periódicamente que los datos de compensación en el almacenamiento del dispositivo y reiniciar el servicio de forma automática. ¡Parece que hay mucho que considerar! –

1

Utilizamos los tiempos de GPS en nuestra aplicación por razones muy similares. Dado que nuestros usuarios se encuentran en diferentes zonas horarias y queremos horarios locales, desde nuestro servidor definimos la zona horaria en la que se encuentran en el momento de la instalación (no se mueven demasiado). No había pensado en las ubicaciones simuladas de GPS, pero necesitaría ser un usuario bastante avanzado para hacerlo.

Cuestiones relacionadas