Протокол аксессуаров HomeKit, шаг M4
Я не уверен, разрабатывал ли кто-нибудь протокол HomeKit Accessory Protocol ( https://developer.apple.com/homekit/specification/) или без документации, но я столкнулся с проблемой на этапе M4.
Я вычислил M2 (подтверждение сервера) и вернул его со следующим форматом данных TLV (0601040440)[serverproof]
). Я написал клиент HomeKit, который возвращает, что M2 является действительным. Я запустил этот же клиент для HAP-NodeJS ( https://github.com/KhaosT/HAP-NodeJS/) и аксессуара, используя Симулятор аксессуаров HomeKit, и оба они также возвращают, что M2 действителен. Если я возвращаю неверные данные, клиент правильно сообщает, что M2 является недействительным.
При соединении с устройством iOS сервер закрывает соединение после того, как я возвращаю ответ M4. Это то, что происходит, если я изменяю HAP-NodeJS, чтобы вернуть недопустимый M2. Я также подал радар № 33200334, потому что в этот момент недействительный M2 должен сообщить об ошибке пользователю, но приложение Home просто закрывает соединение с аксессуаром и зависает.
Кто-нибудь работал с HAP и пролил свет на эту проблему?
1 ответ
Моя ошибка была в TXT-Record "ff" службы Bonjour. После того, как я удалю эту запись из записей, устройство iOS подтвердит мой ServerProof и перейдет к шагу M5.
PS: я попытался установить значение 0x01 (не как строка), и процесс сопряжения также работает.