iOS 12中无法获取WiFi的名称了吗?别慌看这里!

  

  

名称全称服务集标识符,即无线网络的公开名称。在IOS 4.1以上版本提供了公开的方法来获取该信息。

  

但是最近,苹果于北京时间9月17日晚在官网发布了Xcode 10正式版,QiShare团队成员于9月18日中午统一升级以对现有项目做适配。期间,作者发现某项目使用Xcode 10编译出的iOS应用程序在12中无法获取WiFi的SSID。

  
  

敲黑板:获取WiFi的SSID是智能硬件应用中配网模块的常用功能,各大厂商要针对iOS 12适配一波了(@huawei.com;@mi.com;@360.com;@jd.com;@baidu.com;@orvibo.com;@scinan.com;

……)。      

获取WiFi的名称的方法如下:

        + (NSString *) wifiSSID {      NSString *名称=零;   NSArray * ifs=(__bridge_transfer id) CNCopySupportedInterfaces ();   在ifs (NSString * ifnam) {   NSDictionary *信息=(__bridge_transfer id) CNCopyCurrentNetworkInfo ((__bridge CFStringRef) ifnam);   如果信息[@ "名称"]){   名称=info(@ "名称");   }   }   返回名称;   }      

在iOS 12中,经断点调试发现信息为零。猜测是CNCopyCurrentNetworkInfo方法在iOS 12中有了变化。通过查看官方文档,发现文档中增加了重要的字样的描述:
  

  

 iOS 12中无法获取WiFi的名称了吗?别慌看这里!”> </p>
  <p> CNCopyCurrentNetworkInfo文档<br/>
  </p>
  <blockquote>
  <p>重要<br/>
  在iOS 12和后使用这个函数,使访问无线信息能力在Xcode中为您的应用程序。当启用了此功能,Xcode自动添加访问无线信息权利权利文件和应用程序ID。</p>
  <p>重要描述<br/>
  在iOS 12 +中使用此方法需要在Xcode中为应用授权获取无线信息的能力。授权后,Xcode会自动在App ID和应用的权限列表中增加获取无线信息的权限。</p>
  </引用>
  <p> </p>
  <p>看到这里,解决方案就有了:Xcode→(项目名称)→目标→(目标名称)→功能→访问无线信息→alt=

  

解决方案步骤图示

  

按照上述方案操作完毕后,会发现工程的。权利文件中多了一对键值:
  

  

 iOS 12中无法获取WiFi的名称了吗?别慌看这里!”> </p>
  </p> <p> .entitlements文件
  <p>至此,就能在iOS 12 +中正常获取到WiFi的SSID了。</p>
  <p> </p>
  <p>以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。</p>
  <p>级别:★☆☆☆☆<br/>
  </p>
  <p>标签:“iOS 12”“名称”“访问无线信息”“CNCopyCurrentNetworkInfo”<br/>
  </p>
  <p> x·H <br/>
  </p>
  <p>审校:QiShare团队<br/>
  </p><h2 class=iOS 12中无法获取WiFi的名称了吗?别慌看这里!