2012-03-13 15 views
26

có thể nhận được danh sách của tất cả SSID có sẵn trên iPhone mà không cần sử dụng thư viện riêng không?iPhone có danh sách tất cả SSID không có thư viện riêng

tôi đọc 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

nhưng có vẻ không phải là một giải pháp để có được một danh sách tất cả các mạng có sẵn mà không using a private library hoặc kết nối với tất cả trong số họ (những gì là vô lý ...)

Vì vậy, về cơ bản tôi thiếu cái gì đó hoặc không có giải pháp?

+0

Xin chào, bạn đã đạt được điều này như thế nào? bạn có thể chia sẻ mã mẫu không? – Smita

Trả lời

27

Nếu không sử dụng thư viện riêng (Apple80211), bạn chỉ có thể nhận được SSID của mạng mà thiết bị của bạn hiện đang kết nối.

+0

thanks - Tôi đã mong đợi câu trả lời này ... – grubernd

+6

@grubernd: tôi ước tôi có thể cung cấp cho bạn một số khác nhau :) –

+1

chúng tôi có thể nhận SSID, BSSID và SSID DATA mà không sử dụng api riêng nhưng chỉ sử dụng lớp CaptiveNetwork trong SystemNetworkConfiguration.framework. –

1

Bước 1: thêm khuôn khổ SystemConfiguration.framework
Bước 2: nhập khẩu tập tin tiêu đề sau

import SystemConfiguration 
import SystemConfiguration.CaptiveNetwork 

Bước 3: Bây giờ Sử dụng Mã số:

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

bạn có thể gõ lệnh phiên bản c mục tiêu –

+0

Chỉ nhận được SSID được kết nối, tôi muốn tìm nạp tất cả SSID tầm xa. Bạn có thể giúp tôi làm như vậy không? –

1

Trước hết nhập trên hai đầu hệ thống er nộp

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

dưới đây Function/Phương pháp Return 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

Chỉ nhận được SSID được kết nối, tôi muốn tìm nạp tất cả SSID tầm xa. Bạn có thể giúp tôi làm như vậy không? –

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; 
     } 
    }