我正在爲我正在開發的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