【发布时间】:2015-12-21 22:55:42
【问题描述】:
我正在使用NSNetService 和NSNetServiceBrowser 在网络上发布和扫描 Bonjour 服务。实施工作正常,服务在网络上找到并且它们能够通信。我目前正在尝试了解框架的生命周期以及到目前为止我所拥有的:
// Scanning
netServiceBrowserWillSearch:
netServiceBrowser:didFindService:moreComing: // The device finds itself
// Advertising
netServiceWillPublish:
netServiceDidPublish:
如果我在适配器开启的情况下启动服务,就会发生这种情况。现在我需要随时了解该服务是否在网络上被积极宣传;也就是说,如果其他设备能够找到它。所以我通过关闭 Wi-Fi 适配器来测试它:
netServiceBrowser:didRemoveService:moreComing:
netServiceBrowser:didFindService:moreComing: // The device finds itself again, even after the adapter is turned off
然后我重新打开适配器:
netServiceBrowser:didRemoveService:moreComing:
netServiceBrowser:didFindService:moreComing: // Yet again
问题是打开或关闭适配器绝对没有区别,所以我无法寻找模式。有没有其他方法可以捕捉这些事件?
编辑:情况变得更糟。即使我在两个适配器都关闭(飞行模式)netServiceDidPublish: 的情况下启动服务,仍然会被调用。到目前为止,netServiceDidNotPublish: 似乎只有在我尝试注册相同的服务两次时才会被调用。这对我来说非常违反直觉;也许服务已发布到适配器,但没有发布到网络,因此这些回调非常具有误导性。在这一点上,我无法知道该服务在网络上是否可见。
【问题讨论】:
-
我遇到了同样的问题。您找到解决方案了吗?
-
@Mark,刚刚发布了一个答案。祝你好运!
标签: ios bonjour nsnetservice nsnetservicebrowser