我可以在 info-plist 上为 Bonjour 服务使用通配符吗

Posted

技术标签:

【中文标题】我可以在 info-plist 上为 Bonjour 服务使用通配符吗【英文标题】:Can I use wildcard on info-plist for Bonjour services 【发布时间】:2021-04-07 08:59:42 【问题描述】:

我的应用程序使用 bonjour 服务通过本地网络相互对话。 我在使用 OS14 设备的 Xcode12 上遇到问题。

设备发布服务类型名称取决于自身设备 IP 地址 (例如:192.168.33.20 -> _1921683320._tcp)

B 设备搜索服务类型的服务取决于 A 设备 IP 地址 (例如:_1921683320._tcp)

根据苹果文档..来自OS14~

https://developer.apple.com/documentation/multipeerconnectivity

Important
Apps that use the local network must provide a usage string in their Info.plist with the key NSLocalNetworkUsageDescription. Apps that use Bonjour must also declare the services they browse, using the NSBonjourServices key.

因为我的服务类型名称是本地网络ip命名的,它可以根据本地网络设置进行更改,所以我正在考虑使用通配符来定义服务类型名称。

示例:_*._tcp

但是这个定义似乎没有通配符。(我试过了)

我也在考虑改变A设备上的命名方式 (例如:192.168.33.20 -> _20._tcp) 并将 _1.tcp ~ _255.tcp 添加到 info-plist

但是如果我改变了命名方法,B设备直到版本更新才能找到A设备。

对这个问题有什么想法吗?请帮忙。

【问题讨论】:

【参考方案1】:

我目前正在解决同样的问题 - Bonjour 服务名称是根据 iPad 名称动态创建的,以形成本地网状网络。我得出的结论是 com.apple.developer.networking.multicast 需要它才能正常工作,而无需彻底检查所有逻辑的完成方式。 (More info here)

您必须通过填写form here 请求苹果的许可。让我知道这是否适合您!

【讨论】:

【参考方案2】:

我发现的是,你“可能”不能使用通配符,但你可以在 plist 中放置多个条目:

Item 0 _multicastapp0-p._tcp  
Item 1 _multicastapp1-p._tcp
Item 2 _multicastapp2-p._tcp
Item 3 _multicastapp3-p._tcp
etc
Item N _multicastappN-p._tcp

因此,出于某种原因,如果您尝试拥有多个 8 个“组”或让设备拥有自己的“集合”,即作为服务器并有 3 个设备连接到该设备,则可以。

我还没有“完全”测试,但我将在我的应用程序中执行此操作,我确实使用多个键进行了测试,但没有完全测试,没有错误...

【讨论】:

以上是关于我可以在 info-plist 上为 Bonjour 服务使用通配符吗的主要内容,如果未能解决你的问题,请参考以下文章

我的 IOS 方向表现得很奇怪,不会听任何编程代码?

我可以在 Windows 上为 iOS 开发 Kivy 应用程序吗?

是否可以在 Microsoft SQL Server 上为 SQL 查询设置超时?

有哪些选项可以在 AWS 上为 Pandas 设置自动报告流程?

我可以在 Cloudwatch 仪表板的同一轴上为一个指标绘制多个统计数据吗?

在 SQL Server 上为 Oracle 存储过程使用同义词