gpt4 book ai didi

android - 获取android/iphone到服务器的准确时间

转载 作者:太空宇宙 更新时间:2023-11-03 13:01:39 27 4
gpt4 key购买 nike

我们有一个正在开发的 android(或 iphone)客户端。客户端允许 android 用户将条目发送到我们也开发的服务器。如果在用户向服务器发送条目时客户端没有数据服务(GPRS),客户端还支持将条目保存到离线数据库中,稍后将其发送到服务器。

整个过程的一个重要方面是用户将条目发送到服务器的时间戳的准确性(无论条目是实时生成的还是客户端从离线数据库发送的)

当在客户端可用时,我们获得 GPS 位置并能够使用 GPS 时间戳将其发送到服务器(或将 GPS 时间戳保存在离线数据库上,稍后将其发送到服务器)。然而,如果用户关闭了 GPS(和所有其他定位服务),设备将没有 GPS 定位,因此服务器无法准确确定输入的时间。我们不能使用本地设备时钟,因为用户可能会更改时钟以在与实际发生的时间不同的时间进行输入(这些输入是用户工资的一部分,因此他可能有兴趣“修复”它们)。

所以基本上,我正在寻找一种方法,在我不相信手机的内部时钟的情况下,尽我所能确定输入某项的时间。该算法应支持实时发送的条目或从离线数据库发送的条目。该算法还应支持用户更改手机时间、打开/关闭手机、在手机上运行应用程序时打开/关闭 GPS 等情况...

我想到的一些想法:

  1. 虽然我不相信手机的时间,但它仍然可以作为秒表使用:有一个循环直到应用程序存在的类,循环将休眠 1 秒并将内部时钟变量增加 1 秒。在我的代码获取的每个 GPS 位置上,我们更新内部时钟变量。这样我就有了一个来自设备外部(来自 GPS)的绝对时钟,当客户端向服务器发送一个条目时,我们可以使用内部时钟作为绝对时间。

优点:用户无法修改此时钟,因为它仅在我们从 GPS 获取位置时更新

缺点:在用户可以进行任何可靠的输入之前,该应用程序至少需要一个 GPS 定位

  1. 我可以利用服务器具有准确时钟这一事实。如果客户端向服务器发送条目存在时间为 10 分钟的信息,服务器可以使用其内部时间并知道条目创建的确切时间。

最大的问题是如何知道入门年龄?我考虑过将条目保存到年龄为 0 的离线数据库中,然后每 1 秒增加数据库中条目的年龄。问题是,如果应用程序关闭和/或设备关闭,现在就会发生这种情况

这是我目前卡住的地方。非常欢迎任何关于如何解决这个问题的想法

谢谢

最佳答案

以下是我为 iPhone 处理此问题的方法。当应用程序启动时,我调用我的服务器并询问当前的 GMT 时间(如果你愿意,你也可以调用公共(public) NTP 服务器)。然后我将它与系统时间进行比较。如果相差超过 X,那么我会弹出一条消息说,抱歉,您的系统时间有误,因此在您解决此问题之前您无法使用该应用程序。然后我监视用户在应用程序运行时更改系统时间,如果他们这样做,那么我再次进行比较(如果时间偏差超过 X,则弹出错误消息)。这确保了他们的系统时间总是正确的(在一些合理的允许范围内)并且你可以信任 [NSDate date]。但是,此解决方案确实需要有效的网络连接。如果此解决方案适合您,我可以发布示例代码。

关于android - 获取android/iphone到服务器的准确时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10373918/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com