NSNetServiceBrowser 未在 iOS 14 上搜索错误 -72008

NSNetServiceBrowser did not search with error -72008 on iOS 14

设置 Multipeer Connectivity(使用 Bonjour)时也会触发同样的错误。我用于启动 Bonjour 浏览和 Multipeer Connectivity 的代码是从 Apple 示例代码修改而来的,并且在 iOS 13.

下运行良好

您需要将以下键添加到 Info.plist: NSLocalNetworkUsageDescriptionNSBonjourServices。 例如

<key>NSLocalNetworkUsageDescription</key>
<string>Reason for using Bonjour that the user can understand</string>
<key>NSBonjourServices</key>
<array>
    <string>_my-service._tcp</string>
    <string>_my-service._udp</string>
</array>

确保 my-service 已根据您的服务名称正确命名。例如。如果您正在为 "foobar" 服务设置 MPC,您可能

mpcAdvertiserAssistant = MCAdvertiserAssistant(serviceType: "foobar", discoveryInfo: discoveryInfoDict, session: mpcSession)

所以你会使用

<string>_foobar._tcp</string>
<string>_foobar._udp</string>

(您可能不需要在您的实施中同时使用 TCP 和 UDP。)

https://developer.apple.com/videos/play/wwdc2020/10110/

https://developer.apple.com/forums/thread/653316

@DDP,我来自你在 GCDWebServer 问题 #525 中的回答。我遇到的问题和你的类似。对我来说,使用真实 iPhone 时无法打开主页。控制台打开服务器成功,浏览器连接不上

我按照您的回答显示添加了以下键,并将 _my-service._tcp 更改为 GCDWebServer.

中的内容
    <key>NSLocalNetworkUsageDescription</key>
    <string>Reason for using Bonjour that the user can understand</string>
    <key>NSBonjourServices</key>
    <array>
        <string>_http._tcp</string>
        <string>_http._udp</string>
    </array>

此更改后,问题已解决。谢谢!

所以这个问题与iOS14的新权限有关to find and connect to devices on your local network.无论是否授予此权限,我都可以访问Web服务器,很奇怪!

虽然我很好奇你是如何通过调试找到根本原因的。对我来说,Xcode 控制台中没有显示任何 error/additional 信息,我不知道哪里出了问题。

我通过向 Info.plist 添加以下代码解决了这个问题:

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