2013-03-10 4 views
4

Цель:IOS времени между устройствами синхронизируются

Дано N устройств, я хотел бы, чтобы их начать действие, которое займет 10 секунд ровно и собирать эти ДАННЫЕ в конце концов. Проблема в том, что все N устройств должны запустить эту процедуру в той же миллисекунде.

Преимущество:

Так как данные будут собраны, можно запустить дальнейшее обнаружение о миллисекундных различиях между устройствами. Но этот подход также требует другого механизма для обнаружения такого поведения на стороне сервера.

Проблема:

Что должно быть мой механизм для синхронизации «запуска» время между N устройств? Можем ли мы определить разницу между устройством и сервером (так как он даст тот же результат, что и время синхронизации)?

ответ

1

Да.

Предполагая, что сообщения принимаются в течение менее чем за одну секунду на всех устройствах:

Сервер отправляет сообщение N устройств. Это сообщение содержит временную метку сервера вместе со временем (в будущем), в котором должен начаться процесс (например, 2000 мс).

Каждое устройство проверяет временную метку сервера своей собственной временной меткой и вычисляет разницу. Затем запускается таймер, чтобы в определенный момент в будущем он запустил процесс.

Таким образом (в теории) устройства начинают процесс в одно и то же время. Я сказал теоретически, так как это будет работать, если на устройстве iOS не будет других приложений, которые уже потребляют процесс и память, чтобы помешать вашему приложению.

+0

и как я могу рассчитать время соединения между сервером и устройством (при получении метки времени) – Bartu

+0

После того, как устройство получит сообщение с сервера, приложение должно проверить текущее время устройства. Поскольку сообщение уже содержит отметку времени сервера, приложение может вычесть эти два значения, чтобы иметь время дельта. – Armin

+0

Я нажал клавишу возврата, и вышеописанное сообщение было отправлено. Чтобы получить текущее время устройства iOS, вы можете использовать [[NSDate date] timeIntervalSince1970]; – Armin

Смежные вопросы