獲取Wi-Fi的SSID


前幾天做項目的時候,碰到一個問題,獲取wifi的SSID,其實就是獲取Wi-Fi的名字

iOS12以前

在iOS13之前獲取wifi的SSID很簡單,蘋果提供了接口CNCopyCurrentNetworkInfo,直接調用就可以拿到了,附上代碼:

-(NSString *)getSSIDWhenAuth {

  NSString *ssidNameStr = @"GET_SSID_FAILED";

  NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces();

  for (NSString *ifname in ifs) {

    NSDictionary *ifDic = (__bridge_transfer NSDictionary *)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifname);

    if(ifDic[@"SSID"]){

      ssidNameStr = ifDic[@"SSID"];

    }

  }

  return ssidNameStr;

}

是不是很簡單,后來蘋果處於對安全的考慮,這樣是不行滴.

 

iOS12以后,Xcode11之前

在iOS 12中,經斷點調試發現info為nil。猜測是CNCopyCurrentNetworkInfo方法在iOS 12中有了變化。通過查看官方文檔,發現文檔中增加了Important字樣的描述:

 

 

Important To use this function in iOS 12 and later, enable the Access WiFi Information capability for your app in Xcode. When you enable this capability, Xcode automatically adds the Access WiFi Information entitlement to your entitlements file and App ID.
重要描述 在iOS 12+中使用此方法需要在Xcode中為應用授權獲取WiFi信息的能力。授權后,Xcode會自動在App ID和應用的權限列表中增加獲取WiFi信息的權限。
 
下面就開始操作
Xcode -> [Project Name] ->  Targets -> [Target Name] ->  Capabilities ->  Access WiFi Information ->  ON

 

 

按照上述方案操作完畢后,會發現工程的.entitlements文件中多了一對Key-Value

 

 

接下來就可以正常獲取ssid了,不過我現在環境是iOS13+,Xcode11+,發現Xcode沒有Access WiFi Information開關了,查了很多資料,需要在開發者賬號里配置.

 

iOS12以后,Xcode11之后,重新創建證書

步驟1、登錄開發者賬號

步驟2、鑰匙串生成CSR文件

步驟3、創建證書

 

 

 

 

 

 

 

 

 

 

 

 

 

 

步驟4:創建完下載證書雙擊安裝到Xcode

步驟5:

 

 

雙擊2位置,這時會在下面多出一條Access WiFi Information,這時就可以正常獲取到ssid了.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM