Получите URL-адрес Bonjour от GCDWebServer

Я использую GCDWebServer и запускаю его, запустив:

webServer!.start(withPort: 8080, bonjourName: "Test")

При проверке журналов [INFO] из GCDWebServer я вижу два сообщения в двух разных местах:

  • GCDWebServer запущен на порту 8080 и доступен по адресу http://{deviceIp}:8080/
  • GCDWebServer теперь доступен локально по адресу http://{deviceName}.local:8080

Меня утомляет тот факт, что другой URL-адрес использует имя устройства, а не bonjourName, который я настроил в приведенном выше коде, но это не имеет большого значения.

Что еще более важно, так это то, что после реализации GCDWebServerDelegate webServerDidStart печать serverURL оттуда по-прежнему показывает URL-адрес IP.

Я также вижу, что webServerDidStart вызывается до того, как я получаю сообщение Bonjour Registration Complete for GCDWebServer в журнале.

Как я могу получить удобочитаемый URL-адрес?


person Tomáš Hübelbauer    schedule 16.07.2017    source источник


Ответы (2)


Используемое свойство — bonjourServerURL. serverURL всегда является IP-адресом, и после вызова метода делегата webServerDidCompleteBonjourRegistration bonjourServerURL содержит значение. Я не знаю, почему имя хоста в URL-адресе Bonjour не соответствует значению аргумента bonjourName.

person Tomáš Hübelbauer    schedule 26.07.2017
comment
webServerDidCompleteBonjourRegistration не вызывается в iOS 14.x - person Bkillnest; 29.09.2020

Это все о новых настройках конфиденциальности локальной сети. Проблема с Bonjour решилась добавлением в info.plist следующего:

<key>NSLocalNetworkUsageDescription</key>
    <string>My app uses local network</string>

<key>NSBonjourServices</key>
<array>
    <string>_http._tcp</string>
</array>
person Дмитрий Акимов    schedule 23.01.2021