Ich verwende NSNetService und NSNetServiceBrowser, um Bonjour-Dienste im Netzwerk zu veröffentlichen und nach ihnen zu suchen. Die Implementierung funktioniert einwandfrei, die Dienste befinden sich im Netzwerk und sie können kommunizieren. Ich versuche zur Zeit des Rahmen des Lebenszyklus zu verstehen, und das, was ich bisher habe:Wissen über den Status eines Bonjour-Dienstes
// Scanning
netServiceBrowserWillSearch:
netServiceBrowser:didFindService:moreComing: // The device finds itself
// Advertising
netServiceWillPublish:
netServiceDidPublish:
Dies geschieht, wenn ich die Dienste mit dem Adapter auf starten. Jetzt muss ich jederzeit wissen, ob der Dienst im Netzwerk aktiv beworben wird. das heißt, wenn andere Geräte es finden können. So teste ich es mit dem Adapter Wi-Fi ausgeschaltet:
netServiceBrowser:didRemoveService:moreComing:
netServiceBrowser:didFindService:moreComing: // The device finds itself again, even after the adapter is turned off
Dann drehe ich den Adapter wieder auf:
netServiceBrowser:didRemoveService:moreComing:
netServiceBrowser:didFindService:moreComing: // Yet again
Das Problem ist, dass es absolut keinen Unterschied in den Adapter ein- oder Aus, so kann ich nicht nach einem Muster suchen. Gibt es eine andere Möglichkeit, diese Ereignisse zu erfassen?
Edit: Es wird am schlimmsten. Auch wenn ich die Dienste mit beiden Adaptern aus starte (Flugzeugmodus) wird netServiceDidPublish: immer noch angerufen. Bis jetzt scheint es, dass netServiceDidNotPublish: nur aufgerufen wird, wenn ich versuche, den gleichen Dienst zweimal zu registrieren. Das ist mir sehr entgegengesetzt; vielleicht wurde der Dienst auf dem Adapter veröffentlicht, aber nicht auf dem Netzwerk, und als solche sind diese Rückrufe sehr irreführend. An dieser Stelle kann ich nicht wissen, ob der Dienst im Netzwerk sichtbar ist.
Ich stieß auf das gleiche Problem. Hast du eine Lösung dafür gefunden? – Mark
@Mark, gerade eine Antwort geschrieben. Viel Glück! –