【问题标题】:Discovering services via Bonjour on iOS 14在 iOS 14 上通过 Bonjour 发现服务
【发布时间】:2021-02-16 08:56:59
【问题描述】:

我无法理解在 iOS 14 上使用 Bonjour 进行本地网络服务发现的隐私限制。以下是我的发现:

  1. 使用 NetServiceBrowser,我可以通过以下方式发现服务: browser.searchForServices(ofType: "_services._dns-sd._udp", inDomain: "local.") 我必须在 .plist 文件中添加几个键,但它可以工作。
  2. 但是,如果我转向 NWBrowser 并尝试运行相同的请求,则会收到错误消息:
    nw_browser_fail_on_dns_error_locked [B1] Invalid meta query type specified. 
    nw_browser_start_dns_browser_locked failed: BadParam(-65540)

我收集,这意味着我需要多播权利。

现在的问题是,如果我可以使用NetServiceBrowser 而不是NWBrowser,我为什么还要费力地向Apple 请求多播授权? NetServiceBrowser不是违背了获取组播权限的目的吗?

【问题讨论】:

    标签: ios swift bonjour


    【解决方案1】:

    根据docs,此错误意味着您将无效值传递给NWBrowser - 很可能是您尝试发现的服务格式。

    您尚未发布您的NWBrowser 代码,但例如,格式错误的服务(如_example_.tcp)可能会导致您看到的错误。确保它的格式正确,应该是 _example._tcp.

    您需要做的另一件事是修改您的 Info.plist 文件并添加两个键:

    • Bonjour Services - 这是一个数组,第一项应该是您要发现的服务,在我的示例中,它是 _example._tcp.
    • Privacy - Local Network Usage Description - 在您使用 NWBrowser 开始发现时,会向用户显示说明文本。

    现在关于您提到的权利:仅扫描网络上所有服务的应用程序需要它,而不是像您的情况那样的特定服务。我鼓励你观看this video,它解释了我在这里写的一切。

    最后,为什么要使用NWBrowser 而不是NetServiceBrowser?这是一个非常好的问题,我也在努力找出答案 ?

    【讨论】:

      猜你喜欢
      • 2020-12-16
      • 1970-01-01
      • 2014-02-12
      • 2021-05-21
      • 2011-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-13
      相关资源
      最近更新 更多