我正在为我一直在开发的一个NSNetServiceBrowser项目开发一个应用程序,在WiFi之上使用Bonjour (准确地说,是WiFi)。
然而,尽管注意到在Why does NSNetServiceBrowser find unpublished services in iPhone OS?的出色响应中提出了一些问题,但我仍然在NSNetSericeBrowser方面遇到了一些困难。
我的安排如下:
然而,我经历了以下问题:-
发布了很长时间的
我遇到的问题很奇怪,因为Bonjour 90%的时间.这仅仅是10%,正在破坏我的应用程序的可靠性!令人讨厌的是,所有上述问题都可以通过双击主页按钮并强制关闭应用程序,然后重新运行来解决。在再次运行它之后,它总是找到正确的会话或正确发布。
避免这个问题的一种方法是在无线网络改变的时候拆除并重新启动NSNetServiceBrowser .但这似乎是非常混乱和不必要的。令人沮丧的是,Bonjour是一个高级别的API,没有任何实际的选项来调整和测试。
有什么办法能解决1-4问题吗?
谢谢!
发布于 2011-10-06 10:43:31
好的,我设法解决了这个问题--如果其他人在Bonjour/NSNetServiceBrowser遇到这种可靠性问题时,这里是我的解决方案:
1.将NSNetService和NSNetServiceBrowsers都安排如下:
[netService scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[netServiceBrowser scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];2.确保实现netServiceBrowser:didNotSearch: NSNetServiceBrowserDelegate.中的方法
当NSNetService无法发布时(无论出于什么原因),这将被触发。我所做的就是把一个UIAlertView放在里面,向用户显示一条消息,上面写着搜索不能完成,他们应该检查他们的网络连接。浏览似乎自动重新启动,一旦它能够这样做(但我需要调查这一点,也许是我的代码中的某些东西使它发生.)
https://stackoverflow.com/questions/7645613
复制相似问题