iOS 设备间同步时间

Bar*_*rtu 5 time sync ios

目标:

给定N个设备,我想让它们开始一个动作,精确到10秒,最后收集这些数据。问题是,所有 N 个设备都应该在同一毫秒内启动此过程。

优势:

由于将要收集数据,我可以进一步检测设备之间的毫秒差异。但是这种方法还需要另一种机制来检测服务器端的此类行为。

问题:

在 N 个设备之间同步“开始”时间的机制应该是什么?我们能否检测到设备和服务器时钟之间的差异(因为它会给出与同步时间相同的结果)?

Arm*_*min 1

是的。

假设所有设备上都在不到一秒的时间内收到消息:

服务器向N台设备发送消息。该消息包含服务器的时间戳以及该过程应该开始的时间(将来)(例如2000 毫秒)。

每个设备都会将服务器的时间戳与自己的时间戳进行检查并计算差异。然后启动一个计时器,以便在未来的精确时刻启动该过程。

这样(理论上)设备会在同一时间启动一个进程。我说的是理论上,因为如果 iOS 设备上没有其他应用程序正在消耗进程和内存来干扰您的应用程序,那么这将起作用。

  • 你总会有一些无法消除的不确定性。如果您的设备正在接收命令,则无法(缺乏低级网络数据包检查)知道该命令是多久前从服务器发送的以及它通过网络传输到您的设备花费了多长时间。因此,如果您的服务器发送“现在是上午 10 点”,则每个孤立的设备都无法知道该消息到达需要多长时间,并且每个设备也无法知道需要纠正多少网络延迟。 (2认同)