我的应用程序使用bonjour服务通过本地网络相互对话。我在使用OS14设备的Xcode12上遇到了问题。
设备发布具有服务器类型名称的服务取决于自身设备IP地址(例如: 192.168.33.20 -> _1921683320._tcp)
B设备搜索服务类型依赖于A设备IP地址(例如:_1921683320._tcp)
根据苹果document..From 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
但似乎通配符在这个定义上不可用。(我试过了)
我还在考虑更改设备的命名方法(例如: 192.168.33.20 -> _20._tcp),并将_1.tcp ~ _255.tcp添加到info-plist
但如果我更改了命名方法,B设备在版本升级之前无法找到A设备。
对这个问题有什么想法吗?请帮帮忙。
发布于 2021-04-15 03:16:27
我目前正在解决同样的问题- Bonjour服务名称是基于iPad名称动态创建的,以形成本地mesh网络。我得出的结论是,在不彻底检查所有逻辑是如何完成的情况下,需要com.apple.developer.networking.multicast才能使其发挥作用。(More info here)
你必须通过填写form here来获得苹果公司的许可。如果这对你有效,请告诉我!
发布于 2022-01-30 18:53:29
我发现,你“可能”不能使用通配符,但你可以在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个设备连接到它,你可以。
我还没有“完全”测试,但我将在我的应用程序中做到这一点,我确实使用了多个键测试,但不是完全的,没有错误…
https://stackoverflow.com/questions/66982747
复制相似问题