设备间的iOS同步时间

设备间的iOS同步时间,ios,time,sync,Ios,Time,Sync,目标: 给定N台设备,我想让它们开始一个动作,这个动作需要10秒的时间,并最终收集这些数据。问题是,所有N个设备都应该在同一毫秒内启动此过程 优势: 由于将要收集数据,我可以进一步检测设备之间的毫秒差异。但这种方法还需要另一种机制来检测服务器端的这种行为 问题: 我应该采用什么机制来同步N个设备之间的“启动”时间? 我们是否可以检测设备和服务器时钟之间的差异(因为它将给出与同步时间相同的结果)?是 假设所有设备在不到1秒的时间内接收到消息: 服务器向N个设备发送消息。此消息包含服务器的时间戳以及

目标:

给定N台设备,我想让它们开始一个动作,这个动作需要10秒的时间,并最终收集这些数据。问题是,所有N个设备都应该在同一毫秒内启动此过程

优势:

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

问题:

我应该采用什么机制来同步N个设备之间的“启动”时间? 我们是否可以检测设备和服务器时钟之间的差异(因为它将给出与同步时间相同的结果)?

假设所有设备在不到1秒的时间内接收到消息:

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

每个设备将使用自己的时间戳检查服务器的时间戳,并计算差异。然后启动计时器,以便在将来的某个精确时刻启动该过程

这样(理论上)设备在同一时间启动一个过程。
我从理论上说,如果iOS设备上没有其他应用程序已经消耗了进程和内存来干扰你的应用程序,那么这将起作用。

当设备接收到来自服务器的消息时,我该如何计算服务器和设备之间的连接时间(同时获取时间戳),应用程序应检查设备的当前时间。由于消息已经包含服务器时间戳,应用程序可以减去这两个值以获得增量时间。要获取iOS设备的当前时间,可以使用[[NSDate date]TIMEIVERSICENCE1970];你总会有一些无法消除的不确定性。如果您的设备正在接收命令,则无法(除了低级别的网络数据包检查)知道该命令从服务器发送的时间以及通过网络传输到您的设备的时间。因此,如果您的服务器发送“现在是上午10点”,则每个设备都无法单独知道该消息到达所需的时间,也无法知道每个设备需要更正多少网络延迟。现在,如果您的设备都运行在某个网络上,您可以分析或控制网络传输时间(延迟),那可能不同。但在全球互联网上,您对延迟的控制或可预测性为零。