Jon*_*lis 12 iphone bonjour nsnetservice ios nsnetservicebrowser
我正在为我正在开发的iOS项目开发的应用程序中使用Bonjour(确切地说是NSNetServiceBrowser)而不是WiFi.
然而,尽管注意到为什么NSNetServiceBrowser在iPhone OS中找到未发布的服务的优秀响应中提出的问题?我仍然遇到NSNetSericeBrowser的一些困难.
我的设置如下:
但是,我遇到了以下问题: -
我一直遇到的问题很奇怪,因为Bonjour 90%的时间都在工作......只有10%会破坏我的应用程序的可靠性!令人讨厌的是,通过双击主页按钮并强制关闭应用程序,然后重新运行它,可以解决上述所有问题.再次运行后,它总是找到正确的会话或正确发布.
避免这个问题的一种方法是在无线网络发生变化时拆除并重新启动NSNetServiceBrowser ......但这似乎非常混乱和不必要.令人沮丧的是,Bonjour是一个高级API,没有任何实际的调整和测试选项.
我有什么想法可以解决问题1-4?
谢谢!
好吧,我设法解决了 - 如果其他人遇到Bonjour/NSNetServiceBrowser的这些可靠性问题,这是我的解决方案:
1.按如下方式安排NSNetService和NSNetServiceBrowsers:
[netService scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[netServiceBrowser scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
Run Code Online (Sandbox Code Playgroud)
2.确保从NSNetServiceBrowserDelegate实现netServiceBrowser:didNotSearch:方法.
当NSNetService无法发布时(无论出于何种原因),这将被触发.我所做的是在其中放置一个UIAlertView,向用户显示一条消息,说无法完成搜索并且应该检查他们的网络连接.一旦它能够这样做,浏览似乎会自动重新开始(但我需要调查一下,也许我的代码中的某些内容正在实现......)
归档时间: |
|
查看次数: |
7233 次 |
最近记录: |