Если это только между двумя устройствами, подключенными через Bluetooth, вы можете назначить их как главные часы, а другие - как подчиненные. При первом подключении мастер отправляет свое собственное текущее время. Ведомый может использовать это для вычисления дельта между своими часами и сервером. Затем он будет смещать любые таймеры по дельтам и использовать это значение для установки таймера (мастер использует свои собственные часы, клиент имеет собственные часы +/- diff w/master clock). Таким образом, обе стороны находятся в относительной синхронизации друг с другом.
Другой вариант - получить время с сервера (или NIST, если вам нужны абсолютные значения времени), затем рассчитать дельта между текущим временем iPhone и временем сервера. Как только вы это сделаете, вы не полагаетесь только на местное время, но всегда компенсируете его дельтой.
Это достаточно точный, но не допускает задержки передачи по сети. Если вам нужно быть точным до миллисекунды, тогда вам, возможно, придется полюбить себя и попытаться вычислить некоторую среднюю задержку сети, чтобы помочь закрыть пробел.
Вы не можете этого сделать. Как правило, у вас бывают клиенты, подключенные к серверу какого-то типа, и это будет иметь сердцебиение и отправить сообщение клиентам, чтобы что-то сделать в синхронизации. Если у вас не может быть выделенный сервер, то один из клиентов P2P (обычно это «хост») выполнит эту функцию и скажет всем остальным, когда выполнить какой-либо метод. –
Спасибо .. уточнить, я пытаюсь выяснить, как заставить хост сказать клиенту «когда» и одновременно выполнить выполнение на клиенте и сервере. Так что, возможно, один запускает функцию в 5:25:01, а другой запускает функцию в 5:24:37 или что-то еще. – John