Я пишу приложение, которое требует точной синхронизации. После задавания этого вопроса я решил исследовать использование NTP или возможно Простой NTP.
Есть ли какая-либо реализация с открытым исходным кодом этих протоколов для iPhone? До сих пор мне удалось найти неработающую ссылку. Я также знаю, что NTP имеет ссылочную реализацию C, таким образом, я пытаюсь видеть, какого количества усилия требовалось бы, чтобы заставить его работать над iPhone.
Обновление: Я думал, что у меня была рабочая ссылка, но именно к Wayback Machine, который только сохранил текст, не, ссылка файлов работает.
Я бы, наверное, начал с извлечения кода из OpenNTPD.
Если вы не разрабатываете коммерческое приложение, загляните в исходники linux.
Если вам нужно использовать NTP, но вы не хотите доверять часам iPhone (или iPod), вы всегда можете просто использовать сокеты (или потоки Какао) ) и запросите сервер самостоятельно. Это одна из самых простых сетевых транзакций.
Я не знаю, какое приложение вы создаете, но если доверие к часам является критической характеристикой его безопасности или (в случае игры) предотвращения обмана и т.д., то вам нужно быть очень осторожным с открытыми протоколами, такими как NTP - мошенник может сделать man-in-the-middle на вашем NTP запросе и сказать вашему приложению то, что он хочет услышать.
Если это потенциально может вызывать беспокойство, вы захотите создать свой собственный надежный источник истины для времени на вашем сервере (например, создать свой собственный сервис времени и подписывать свои ответы PK криптографией), и установить внутренние часы вашего приложения на эти часы в пределах некоторого приемлемого отклонения.
Поскольку вы разрабатываете коммерческое приложение, если все остальное не удается, RFC 2030 описывает протокол SNTP. У меня нет информации о коммерчески доступных библиотеках, для которых не требуется фоновая задача, которую iPhone не позволит вам использовать.