从 GCDWebServer 获取 Bonjour URL

Get the Bonjour URL from GCDWebServer

我正在使用 GCDWebServer 并通过 运行:

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

检查来自 GCDWebServer 的 [INFO] 日志时,我可以在两个不同的位置看到两条消息:

我很困惑,另一个 URL 使用的是设备名称,而不是我在上面的代码中配置的 bonjourName,但这没什么大不了的。

更重要的是,在实施 GCDWebServerDelegatewebServerDidStart 之后,从那里打印 serverURL 仍然显示 IP URL.

我还可以看到在日志中收到 Bonjour 注册已完成 GCDWebServer 消息之前调用了 webServerDidStart

如何获得人类可读的 URL?

要使用的 属性 是 bonjourServerURLserverURL 始终是 IP 地址,一旦调用 webServerDidCompleteBonjourRegistration 委托方法,bonjourServerURL 将保留该值。我不知道为什么 Bonjour URL 中的主机名与 bonjourName 参数值不匹配。

这都是关于新的本地网络隐私设置的。通过向 info.plist 添加以下内容解决了 Bonjour 的问题:

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

<key>NSBonjourServices</key>
<array>
    <string>_http._tcp</string>
</array>