Dies ist für eine Optimierung , so dass das Ziel jailbroken Geräte und nicht der App Store ist.
Ich habe versucht, verschiedene Methoden in der SBWiFiManager
hängen, aber sie werden entweder aufgerufen, wenn die WLAN-Stärke ändert (so kontinuierlich) oder nach ziemlich Verzögerung, nachdem das Netzwerk geändert hat.
Gibt es eine andere Möglichkeit, um eine Benachrichtigung (oder eine andere Methode zu haken) ging das WLAN-Netzwerk ändert?
Ich weiß, dass Sie jetzt die aktuelle SSID mit öffentlichen APIs erhalten können, aber ich muss informiert werden, wenn sich diese ändert.
Eine Möglichkeit besteht darin, das Ereignis com.apple.system.config.network_change
im Core Foundation Darwin-Benachrichtigungscenter abzuhören.
Registrieren Sie sich für die Veranstaltung:
%Vor%Hier ist ein Beispiel-Callback:
%Vor%Siehe meinen Link zu einer anderen Antwort zur Verwendung der Captive Network API, um beispielsweise die aktuelle SSID zu erhalten.
Beachten Sie, dass, obwohl das Telefon, das ich getestet habe, jailbroken ist (iOS 6.1), ich glaube nicht, dass dies einen Jailbreak erfordert, um korrekt zu funktionieren. Es erfordert sicherlich nicht, dass die App außerhalb des normalen Sandbox-Bereichs installiert wird ( /var/mobile/Applications/*
).
P.S. Ich habe dies nicht erschöpfend getestet, um zu wissen, ob dieses Ereignis irgendwelche Fehlalarme gibt (basierend auf Ihrer Definition einer Netzwerkänderung). Es ist jedoch einfach genug, nur eine Zustandsvariable zu speichern, die der SSID des letzten Netzwerks entspricht, und diese mit der aktuellen zu vergleichen, wenn dieses Ereignis eintritt.