【问题标题】:Can I use wildcard on info-plist for Bonjour services我可以在 info-plist 上为 Bonjour 服务使用通配符吗
【发布时间】: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设备。

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

【问题讨论】:

    标签: wildcard ios14 xcode12 multipeer-connectivity


    【解决方案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 个设备连接到该设备,则可以。

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

      【讨论】:

        猜你喜欢
        • 2021-10-29
        • 2018-05-22
        • 2020-05-27
        • 1970-01-01
        • 2011-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多