从 GCDWebServer 获取 Bonjour URL
Get the Bonjour URL from GCDWebServer
我正在使用 GCDWebServer 并通过 运行:
启动它
webServer!.start(withPort: 8080, bonjourName: "Test")
检查来自 GCDWebServer 的 [INFO]
日志时,我可以在两个不同的位置看到两条消息:
- GCDWebServer 在端口 8080 上启动,可通过 http://{deviceIp}:8080/
访问
- GCDWebServer 现在可在本地访问 http://{deviceName}.local:8080
我很困惑,另一个 URL 使用的是设备名称,而不是我在上面的代码中配置的 bonjourName
,但这没什么大不了的。
更重要的是,在实施 GCDWebServerDelegate
的 webServerDidStart
之后,从那里打印 serverURL
仍然显示 IP URL.
我还可以看到在日志中收到 Bonjour 注册已完成 GCDWebServer 消息之前调用了 webServerDidStart
。
如何获得人类可读的 URL?
要使用的 属性 是 bonjourServerURL
。 serverURL
始终是 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>
我正在使用 GCDWebServer 并通过 运行:
启动它webServer!.start(withPort: 8080, bonjourName: "Test")
检查来自 GCDWebServer 的 [INFO]
日志时,我可以在两个不同的位置看到两条消息:
- GCDWebServer 在端口 8080 上启动,可通过 http://{deviceIp}:8080/ 访问
- GCDWebServer 现在可在本地访问 http://{deviceName}.local:8080
我很困惑,另一个 URL 使用的是设备名称,而不是我在上面的代码中配置的 bonjourName
,但这没什么大不了的。
更重要的是,在实施 GCDWebServerDelegate
的 webServerDidStart
之后,从那里打印 serverURL
仍然显示 IP URL.
我还可以看到在日志中收到 Bonjour 注册已完成 GCDWebServer 消息之前调用了 webServerDidStart
。
如何获得人类可读的 URL?
要使用的 属性 是 bonjourServerURL
。 serverURL
始终是 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>