免责声明:我是后端开发人员,我不知道Android或iOS应用程序内部会发生什么,所以请耐心等待。
在我们平台的特定用例中,我们需要所有客户端应用程序(Android和iOS)保持内部计时器准确并与外部时间源同步(以便他们可以准确地为彼此之间发送的消息加时间戳) 。这是否可行(例如,使用NTP客户端或不同/更好的技术)?
答案 0 :(得分:0)
当客户端连接到服务器时,它可以获取服务器的参考时间源。一旦获得此功能,它就可以计算并存储服务器时间和设备时间之间的差异。 然后,当客户端需要根据手机上的时间*执行某些操作时,服务器的时间会在需要做任何事情时考虑,例如安排计时器等等。
*只有当应用程序位于前台时,您才能真正根据iOS中的时间执行任何操作。发布本地通知的例外情况。例如,如果应用程序在后台,则无法安排计时器。
答案 1 :(得分:0)
根据Martin H,您可以使用设备内部时间的偏移量。如果用户没有手动设置时间,那么客户端设备可能会在当前时间的一秒内(这确实发生了 - 我只是读到了一个用户将她的日期/时间改为明天以获得游戏奖励)。 / p>
我已经使用设备时间在基于时间的应用中处理了这个问题。客户端和服务器在与服务器通信时验证服务器时间。
例如,当客户端和服务器通信时,服务器可以根据服务器时间验证客户端时间。如果用户时间超过' x'分钟,服务器发回错误信息。
将所有客户端保持在几毫秒之内是很困难的。一种想法是使用服务器来协调消息(消息不是在设备之间发送,而是发送到服务器,然后服务器发送消息)。然后,您可以使用服务器上的接收时间作为消息时间的基础。