我使用NSNetService和NSNetServiceBrowser来发布和扫描网络上的Bonjour服务。实施工作正常,服务在网络上找到,他们能够沟通。目前,我试图了解该框架的生命周期,这是我一直这么远:知道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
@Mark,刚发布了一个答案。最好的运气! –