试飞 - 本地网络权限,TestFlight 构建中的 NSBonjourServices 错误

问题描述

对于iOS14,我们应该从用户那里获得本地网络权限。如果我直接在设备上运行或将其导出为企业应用程序,则该应用程序运行良好。如果我将同一个应用上传试飞,我会收到以下错误

App Info.plist(NSBonjourServices) 不允许 '_xxx-xxx-config._tcp.'对于(Lhoapp)

这是什么错误?如何解决这个问题?

Info.plist 中,我添加了以下应用中使用的服务:

<key>NSBonjourServices</key>
    <array>
        <string>_xxx-xxx-config._tcp</string>
        <string>_iri._tcp</string>
    </array>

我在日志中收到以下错误

["NSNetServicesErrorDomain": 10,"NSNetServicesErrorCode": -72008]

我已为该应用启用了隐私下的本地网络权限

解决方法

Apple document 表示对于 NSLocalNetworkUsageDescription

任何直接或间接使用本地网络的应用都应包含此说明。这包括使用 Bonjour 的应用和通过 Bonjour 实现的服务,以及与本地主机的直接单播或多播连接。

然后你需要添加NSLocalNetworkUsageDescription而且你的plist应该是这样的,当然要改你的app名和tcp。

<key>NSLocalNetworkUsageDescription</key>
<string>Exchange data with nearby devices running the Yourapp.</string>
<key>NSBonjourServices</key>
<array>
    <string>_yourApp._tcp</string>
</array>
,

同时添加 NSLocalNetworkUsageDescription 和 Infos.plist 中的 NSBonjourServices 键对我来说是正确的解决方案。自 iOS 14 起这是必需的,它使 NSNetServices 查找服务。 非常感谢您提供这些信息。