Existe-t-il un moyen de détecter si le wifi est activé sur un iPhone / iPad?
Je ne suis pas intéressé de voir si je peux accéder à Internet, pour cela j'utilise la class Reachability. J'ai juste besoin de savoir si le wifi a été activé sur l'appareil.
Reconnaissant pour tous les conseils.
Peut-être que c'est ce que vous cherchez:
http://www.enigmaticape.com/blog/determine-wifi-enabled-ios-one-weird-sortingck
Il n'y a pas de cadre pour ce que vous voulez faire, mais il y a un truc qui pourrait marcher. Si vous listz les interfaces disponibles, il y aura certaines interfaces qui apparaissent juste quand le wifi est allumé (et d'autres apparaissent juste quand vous êtes connecté à un.) Vous pouvez listr les interfaces comme ceci:
struct ifaddrs *interfaces; if(!getifaddrs(&interfaces)) { for( struct ifaddrs *interface = interfaces; interface; interface=interface->ifa_next) { BOOL up = (interface->ifa_flags & IFF_UP) == IFF_UP; if ( up ) { NSLog( @"Name : %s, sa_family : %d", interface->ifa_name, interface->ifa_addr->sa_family ); } } }
Sortie avec Wifi désactivé:
Name : lo0, sa_family : 18 Name : lo0, sa_family : 30 Name : lo0, sa_family : 2 Name : lo0, sa_family : 30 Name : pdp_ip0, sa_family : 18 Name : pdp_ip0, sa_family : 2 Name : en0, sa_family : 18 Name : awdl0, sa_family : 18
Sortie avec wifi sur:
Name : lo0, sa_family : 18 Name : lo0, sa_family : 30 Name : lo0, sa_family : 2 Name : lo0, sa_family : 30 Name : pdp_ip0, sa_family : 18 Name : pdp_ip0, sa_family : 2 Name : en0, sa_family : 18 Name : awdl0, sa_family : 18 Name : awdl0, sa_family : 30
Sortie avec wifi activé et connecté:
Name : lo0, sa_family : 18 Name : lo0, sa_family : 30 Name : lo0, sa_family : 2 Name : lo0, sa_family : 30 Name : pdp_ip0, sa_family : 18 Name : pdp_ip0, sa_family : 2 Name : en0, sa_family : 18 Name : en0, sa_family : 30 Name : en0, sa_family : 2 Name : awdl0, sa_family : 18 Name : awdl0, sa_family : 30
Si vous explorez la structure ifaddrs, vous findez également le BSSID / SSID du réseau connecté.
Il y a plusieurs questions concernant le même sujet. Avez-vous essayé ce code d'Apple ?
@property (retain, nonatomic) Reachability* reach; self.reach = [Reachability reachabilityForInternetConnection]; //retain reach [self.reach startNotifier]; NetworkStatus remoteHostStatus = [self.reach currentReachabilityStatus]; if(remoteHostStatus == NotReachable) {NSLog(@"init **** Not Reachable ****");} else if (remoteHostStatus == ReachableViaWiFi) {NSLog(@"int **** wifi ****"); } else if (remoteHostStatus == ReachableViaWWAN) {NSLog(@"init **** cell ****"); }
Il y a un projet sur github
. . Importé dans votre projet, vous pouvez vérifier la connectivité comme ceci:
Reachability *reachability = [Reachability reachabilityForInternetConnection]; [reachability startNotifier]; NetworkStatus status = [reachability currentReachabilityStatus]; if(status == NotReachable) { //No internet } else if (status == ReachableViaWiFi) { //WiFi } else if (status == ReachableViaWWAN) { //3G }
Le code d'ici.