我正在为我正在开发的iOS项目开发的应用中使用Bonjour(NSNetServiceBrowser,准确地说)通过WiFi进行应用。iOS上的NSNetServiceBrowser/Bonjour问题
但是,尽管注意到在Why does NSNetServiceBrowser find unpublished services in iPhone OS?的优秀响应中提出的问题,但我仍然遇到了NSNetSericeBrowser的一些困难。
我的设置是如下:
- 配备了iPad运行iOS 4.5.3的工作。
- 将AirPort Express用作接入点/路由器。
- 在连接到网络的Mac上运行dns-sd -B _serviceName可以正常工作 - 也就是说,所有发布和停止调用立即反映在桌面上。
不过,我已经经历了以下几个问题: - (约15分钟+)已公布了半天
- 服务往往得不到客户端上删除,即使他们从消失苹果电脑!(即didRemoveService不会被调用)。
- 有时候,发布的服务不会被网络上的其他人看到,即使它们出现在Mac上也是如此!(即didFindService未调用) - 这可能与下面的3/4点有关...因此,如果应用程序在iPad连接到网络之前开始运行(并搜索),则它不会搜索新的网络正常。
- 如果设备在发布服务后更改网络会发生什么情况?我发现Bonjour 不是在新网络上重新发布服务 - 如何强制这种情况发生?
- 如果设备更改网络会发生什么,而正在搜索服务?我发现这也会导致问题,并且往往会导致找不到会话(didFindService未被调用)。
我一直有的问题很奇怪,因为Bonjour有90%的时间工作......只有10%破坏了我的应用程序的可靠性!烦人的是,所有上述问题都可以通过双击主页按钮并强制关闭应用程序,然后重新运行它来解决。再次运行后,它总是找到正确的会话或正确发布。
避免这个问题的一种方法是拆卸并重新启动NSNetServiceBrowser,只要无线网络发生变化......但这看起来非常混乱和不必要。令人沮丧的是,Bonjour是一个高级API,没有任何真正的选项来调整和测试。
任何想法,我可能会解决问题1-4?
谢谢!
不明白为什么这个问题没有收到更多的关注,我也有类似的问题,它非常刺激。 – jbat100