私は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:が呼び出されます。これまでのところ、同じサービスを2回登録しようとすると、netServiceDidNotPublish:が呼び出されたようです。これは私には直感的ではありません。多分サービスはアダプタに公開されましたが、ネットワークには公開されていない可能性があります。そのため、これらのコールバックは非常に誤解を招きます。この時点で、サービスがネットワーク上で見えるかどうかわかりません。
同じ問題が発生しました。あなたはこれに対する解決策を見つけましたか? – Mark
@マーク、ちょうど答えを掲載しました。運が良かった! –