Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过iOS 14上的Bonjour发现服务_Ios_Swift_Bonjour - Fatal编程技术网

通过iOS 14上的Bonjour发现服务

通过iOS 14上的Bonjour发现服务,ios,swift,bonjour,Ios,Swift,Bonjour,我无法理解在iOS 14上使用Bonjour进行本地网络服务发现的隐私限制。以下是我的发现: 使用NetServiceBrowser,我能够通过以下方式发现服务: browser.searchForServices(类型:“\u services.\u dns-sd.\u udp”,inDomain:“local”) 我必须向.plist文件添加几个键,但它可以工作 但是,如果我转到NWBrowser,并尝试运行相同的请求,则会出现错误: 我想,这意味着我需要多播权限 现在的问题是,如果我能使用

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

  • 使用NetServiceBrowser,我能够通过以下方式发现服务:
    browser.searchForServices(类型:“\u services.\u dns-sd.\u udp”,inDomain:“local”)
    我必须向.plist文件添加几个键,但它可以工作
  • 但是,如果我转到
    NWBrowser
    ,并尝试运行相同的请求,则会出现错误:
  • 我想,这意味着我需要多播权限

    现在的问题是,如果我能使用
    NetServiceBrowser
    而不是
    NWBrowser
    ,我为什么要麻烦地向苹果请求多播授权?
    NetServiceBrowser
    是否违背了获取多播授权的目的?

    根据此错误意味着您向
    NWBrowser
    传递了无效值-很可能是您试图发现的服务的格式

    您尚未发布您的
    NWBrowser
    代码,但例如,
    \u example\u.tcp
    等格式错误的服务可能会导致您看到的错误。确保它的格式正确,应该类似于
    \u示例。\u tcp.

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

    • Bonjour Services
      -这是一个数组,第一项应该是您试图发现的服务,在我的示例中,它是
      \u示例。\u tcp.
    • 隐私-本地网络使用说明
      -在您使用
      NWBrowser
      开始查找时,将向用户显示解释文本
    关于你提到的权利:它只适用于扫描网络上所有服务的应用程序,而不是像你这样的特定应用程序。我鼓励你看,这解释了我在这里写的一切

    最后,为什么要在
    NetServiceBrowser
    上使用
    NWBrowser
    ?这是一个很好的问题,我也在试图找出答案
        nw_browser_fail_on_dns_error_locked [B1] Invalid meta query type specified. 
        nw_browser_start_dns_browser_locked failed: BadParam(-65540)