确保正确的日期/时间
问题描述:
我们正在创建一个位置启用的应用程序,用户使用此应用程序在该字段中记录某些事件。确保正确的日期/时间
事件数据的重要部分是事件发生的时间。用户在线时这不是问题,但我们也支持用户离线时的情况(通过记住&以后的同步事件)。
可能会出现用户脱机的情况,他们会更改手机上的时间,从而错误记录事件时间。
因此,如果设备可能处于脱机状态,那么确保我们获得正确时间的最佳方法是什么?一些想法:
- GPS时间。有可能获得它吗?
- 追踪用户所做的系统时间变化?
- 还有其他想法吗?
注意:时间确实需要二次精度,大约一分钟的精度就可以。注2:我们正在为Android和iPhone创建移动应用程序,所以我对通用解决方案以及针对这两种平台的解决方案感兴趣。
答
我个人不会太在意这种情况。有人故意改变他们的Android的时间(全天定期同步到时间服务器),而离线对我来说似乎很低。话虽如此,我可以看到补偿这一点的唯一方法是让服务在后台运行,以保持自从记录位置数据离线后经过的秒数。一旦上传到您的服务器,您可以使用经过的秒数来计算当前UTC时间的时间偏移量。这是一个非常可怕的经历,但它会工作。
GPS时间是一个有趣的想法,但Android允许SDK的用户发送模拟位置到他们的设备。我不确定你是否能够可靠地跟踪系统时间的变化,即使你可以在事实上没有当前实时情况下捕获它们。
答
由于非常类似的原因,我们在我们的应用中使用GPS时间。由于我们的用户处于不同的时区,并且我们希望在当地时间,所以我们从服务器定义他们在安装时所处的时区(他们不会移动太远)。没有想到模拟GPS的位置,但你需要一个相当先进的用户来做到这一点。
我认为GSM网络能够提供当前的时间和许多。所以如果手机在网络上,它应该与那个时间同步。 – 2011-02-18 13:34:10
当设备在线时这是一个非问题 - 我们可以在事件发送时检查服务器上的时间。该问题仅在设备脱机时出现。 – 2011-02-18 13:40:24