0

Я хотел бы временно синхронизировать два устройства iOS с использованием Multipeer Connectivity (так что это должно работать как для WIFI, так и для Bluetooth) в Swift.Временно синхронизировать два устройства iOS через соединение Multipeer в Swift

В идеале мне понадобится синхронизация в пределах 0,03 мс, но допустимо 0,3 мс.

До сих пор я воспроизвожу звук с устройства 1 и записываю его с устройством 2, измеряя время с момента подключения устройств друг к другу через Multipeer Connectivity.

К сожалению, это не обеспечивает точную временную синхронизацию, необходимую для моего приложения.

ответ

0

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

Подготовка сообщения:

// this is the value to send  
let date = NSDate() 

На полученное сообщение код:

let interval = NSDate.timeIntervalSinceDate(theDate) 

Этот интервал времени прошло с тех пор начальная дата была создана на другом устройстве.

+0

Благодарим за предложение. Но если я это хорошо понял, A отправляет его время в B, которое получает его после t. Но это не говорит мне, как синхронизировать A и B. Поэтому, если время A равно 100, а время B - 200, например, и t принимает 20 для передачи от A до B, B будет принимать 100 на 220, но это не предоставляет мне информацию о синхронизации обоих устройств, не так ли? –

+0

Использовать 'playAtTime:', метод/функцию, принадлежащую AVAudioPlayer. Без информации о вашем воспроизведении звука, я предполагаю, что вы используете эту реализацию аудиоплеера по умолчанию. 'playAtTime:' принимает параметр NSTimeInterval как параметр, поэтому он идеально подходит для использования с созданной переменной интервала. –

+0

Спасибо за подсказку. Итак, если я последую за вами, A отправляет свое время (100) в B (200), которое он получает, например, в 220, и может попросить сыграть что-то в момент времени 220 + delay. Но все же, как мы узнаем время между отправкой сообщения A и получением B? Так что 20 в нашем случае? –

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