2012-03-13 8 views
26

è possibile ottenere un elenco di tutti gli SSID disponibili su iPhone senza utilizzare una libreria privata?iPhone ottiene un elenco di tutti gli SSID senza libreria privata

ho letto iPhone get SSID without private library

https://stackoverflow.com/a/6341893/346255

https://developer.apple.com/library/ios/#documentation/SystemConfiguration/Reference/CaptiveNetworkRef/Reference/reference.html

, ma non sembra essere una soluzione per ottenere un elenco di tutte le reti disponibili, senza using a private library o la connessione a tutti loro (ciò che è ridicolo ...)

Quindi in sostanza mi manca qualcosa o non c'è nessuna soluzione?

+0

Ehi, come hai ottenuto questo? puoi condividere il codice di esempio? – Smita

risposta

27

Senza l'utilizzo della libreria privata (Apple80211) è possibile ottenere solo il SSID della rete a cui è attualmente connesso il dispositivo.

+0

grazie - mi aspettavo questa risposta ... – grubernd

+6

@grubernd: vorrei potervi dare un altro :) –

+1

potremmo ottenere SSID, BSSID e SSID DATA senza usare API private ma semplicemente usando la classe CaptiveNetwork in SystemNetworkConfiguration.framework. –

1

Fase 1: aggiungere il quadro SystemConfiguration.framework
Fase 2: importazione di file seguente intestazione

import SystemConfiguration 
import SystemConfiguration.CaptiveNetwork 

Fase 3: ora utilizzare Codice:

func getUsedSSID()->String { 

     let interfaces = CNCopySupportedInterfaces() 

     if interfaces != nil { 

      let interfacesArray = CFBridgingRetain(interfaces) as! NSArray 

      if interfacesArray.count > 0 { 

       let interfaceName = interfacesArray[0] as! String 
       let unsafeInterfaceData = CNCopyCurrentNetworkInfo(interfaceName)! as Dictionary 
       let SSIDName = unsafeInterfaceData["SSID"] as! String 
       print(SSIDName)/* here print recentally used wifi name*/ 
       return SSIDName 
      }else{ 
       return "0" 
      } 
     }else{ 
      return "0" 
     } 
    } 
+0

puoi digitare l'obiettivo c versione pls –

+0

Solo ricevendo SSID connesso, voglio recuperare tutti i SSID a distanza. Puoi per favore aiutarmi a fare lo stesso? –

1

Prima di tutto importare sopra due sistemi Head er presentare

import SystemConfiguration/SystemConfiguration.h 
import SystemConfiguration/CaptiveNetwork.h 

sotto Funzione/Metodo ritorno SSIDName

-(NSString *)getNetworkId{ 
    NSString *string = CFBridgingRelease(CNCopySupportedInterfaces()); 
    NSArray *interfacesArray = CFBridgingRelease(CFBridgingRetain(string)); 
     if(interfacesArray.count > 0){ 
      NSString *networkName = [interfacesArray objectAtIndex:0]; 
      CFStringRef yourFriendlyCFString = (__bridge CFStringRef)networkName; 
      NSDictionary *unsafeInterfaceData = CFBridgingRelease(CNCopyCurrentNetworkInfo(yourFriendlyCFString)); 
      NSString *ssidName = unsafeInterfaceData[@"SSID"]; 
      return ssidName; 
     } 
    return @"No network Found"; 
} 
+0

Solo ricevendo SSID connesso, voglio recuperare tutti i SSID a distanza. Puoi per favore aiutarmi a fare lo stesso? –

0
#import SystemConfiguration# 
##import SystemConfiguration.CaptiveNetwork## 

//create variable 
    var SSIDNameArray = NSMutableArray() 
    var nameArray : NSArray = []; 
// Here function to return all SSIDName 
    func getUsedSSID()->NSArray{ 
     let interfaces = CNCopySupportedInterfaces() 
     if interfaces != nil { 
      let interfacesArray = CFBridgingRetain(interfaces) as! NSArray 
      if interfacesArray.count > 0 { 
       for interfaceName in interfacesArray { 
        let unsafeInterfaceData = CNCopyCurrentNetworkInfo(interfaceName as! CFString)! as NSDictionary 
        let SSIDName = unsafeInterfaceData["SSID"] as! String 
        self.SSIDNameArray .add(SSIDName) 
       } 
       nameArray = self.SSIDNameArray .copy() as! NSArray 
       return nameArray; 
      }else{ 
       return nameArray; 
      } 
     }else{ 
      return nameArray; 
     } 
    } 
Problemi correlati