【问题标题】:Ensuring correct date/time确保正确的日期/时间
【发布时间】:2011-05-12 23:17:59
【问题描述】:

我们正在创建一个支持定位的应用程序,用户可以使用该应用程序记录现场的某些事件。

事件数据的重要部分是事件发生的时间。当用户在线时这不是问题,但我们也支持用户离线时的情况(通过记住和稍后同步事件)。

可能会出现用户离线并更改手机时间的情况,从而错误地记录事件时间。

那么,考虑到设备可能处于离线状态,什么是确保我们获得正确时间的最佳方法,而不受用户操作的影响。一些想法:

  1. GPS 时间。是否有可能获得它?
  2. 跟踪用户所做的系统时间更改?
  3. 还有其他想法吗?

注意:时间确实需要秒精度,大约分钟精度就可以了。

注意 2:我们正在为 Android 和 iPhone 创建移动应用程序,因此我对通用解决方案以及专门针对这两个平台的解决方案感兴趣。

【问题讨论】:

  • 我认为 GSM 网络能够提供当前时间,很多都可以。因此,如果手机在网络上,它应该与那个时间同步。
  • 这在设备在线时不会出现问题 - 我们可以在发送事件时检查服务器上的时间。该问题仅在设备离线时出现。
  • 彼得 - 很抱歉滥用此 SO 评论,但我找不到其他方式与您联系。我无法在您的博客条目中发表有关 SO 用户数据分析的评论。发布和预览都只是重新加载页面。 blogspot 已启用 Cookie,我有一个 google.com 帐户。我猜一些额外的第三个域也需要 cookie,但没有办法知道。评论在这里; slashdot.org/comments.pl?sid=2328930&cid=36789036

标签: iphone android


【解决方案1】:

就个人而言,我不会太担心这种情况。有人在离线时故意更改其 Android 上的时间(全天定期自动同步到时间服务器)的可能性对我来说似乎很低。话虽这么说,我能看到补偿这一点的唯一方法是让服务在后台运行,以保持自离线记录位置数据以来经过的秒数的运行记录。上传到您的服务器后,您可以使用经过的秒数来计算与当前 UTC 时间的时间偏移量。经历了很多事情,但它会起作用。

GPS 时间是一个有趣的想法,但 Android 允许 SDK 用户将模拟位置发送到他们的设备。我不确定您是否可以可靠地跟踪系统时间的更改,即使您可以在没有当前实时作为上下文的情况下在事后捕获它们。

【讨论】:

  • 嗯,使用这个应用程序的公司要求他们的员工在现场使用它——开始工作、停止工作等等。所以员工有一些动机来调整它。特别是如果发现漏洞。
  • 关于创建模拟 GPS 位置的要点。将检查是否可以检测到。
  • 是的,我可以看到在这样的情况下欺诈是多么的敏感。然后考虑一下,在我的场景中,仍然可以终止后台服务。我不确定您是否可以通过定期将偏移数据持久保存到设备存储并自动重新启动服务来最小化这种影响。听起来有很多事情要考虑!
  • 我的想法和你的类似:在后台记录时间以检查是否有任何“差距”。但是我不会使用可以被杀死的后台进程,而是使用 AlarmManager 定期唤醒我的后台服务。
  • 也许问题不是记录绝对经过的时间,而是发现不一致?如果通过您的应用程序逻辑,您发现有人试图伪造某项工作的已用时间,那么某项特定任务可能会失效?
【解决方案2】:

出于非常相似的原因,我们在应用中使用 GPS 时间。由于我们的用户在不同的时区并且我们想要当地时间,我们从我们的服务器定义他们在安装时所处的时区(他们不会移动很远)。没想到模拟 GPS 位置,但您需要是相当高级的用户才能做到这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2016-03-05
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多