1

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

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

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

  • GCDWebServer 在端口 8080 上启动,可通过 http://{deviceIp}:8080/ 访问
  • GCDWebServer 现在可以在本地访问 http://{deviceName}.local:8080

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

更重要的是,在实施GCDWebServerDelegate's之后webServerDidStart,从那里打印serverURL仍然显示 IP URL。

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

如何获取人类可读的 URL?

4

2 回答 2

1

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

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

<key>NSBonjourServices</key>
<array>
    <string>_http._tcp</string>
</array>
于 2021-01-23T13:04:43.587 回答
1

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

于 2017-07-26T12:02:02.583 回答