首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在iOS9中获得Wifi后,CaptiveNetwork已被取消,并且已经阻止了对Wifi名称的调用

如何在iOS9中获得Wifi后,CaptiveNetwork已被取消,并且已经阻止了对Wifi名称的调用
EN

Stack Overflow用户
提问于 2015-07-22 06:38:50
回答 8查看 44.3K关注 0票数 36

直到今天,我使用CaptiveNetwork接口来显示当前连接的Wifi的名称。iOS 9的预发布引用已经声明,CaptiveNetwork方法现在已经被实践了,但是它们在开始时仍然有效。

最新版本的苹果似乎已经屏蔽了这个电话(可能是因为隐私问题吧?)

还有其他方法来获取当前Wifi的名称吗?

直到今天,我都是这样获得SSID的,但是现在你只能得到零:

代码语言:javascript
复制
#import <SystemConfiguration/CaptiveNetwork.h>

NSString *wifiName = nil;  
NSArray *interFaceNames = (__bridge_transfer id)CNCopySupportedInterfaces(); 

for (NSString *name in interFaceNames) { 
    NSDictionary *info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)name); 

    if (info[@"SSID"]) { 
        wifiName = info[@"SSID"]; 
    } 
} 
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2015-09-10 15:46:55

在通用汽车的iOS 9,似乎这是再次启用。实际上,在在线文档中,它甚至没有被列为不推荐使用的文件,但是CaptiveNetwork头文件确实有以下内容:

代码语言:javascript
复制
CNCopySupportedInterfaces (void) __OSX_AVAILABLE_BUT_DEPRECATED_MSG(__MAC_10_8, __MAC_NA, __IPHONE_4_1, __IPHONE_9_0, CN_DEPRECATION_NOTICE);

因此,它正在iOS 9通用汽车上工作,但不确定它能运行多久:)

票数 11
EN

Stack Overflow用户

发布于 2015-07-23 14:46:58

将您的应用程序注册为Hotspot助手。

代码语言:javascript
复制
#import <NetworkExtension/NetworkExtension.h>  

NSArray * networkInterfaces = [NEHotspotHelper supportedNetworkInterfaces];  
NSLog(@"Networks %@",networkInterfaces);  

更新(9月1日)(2015年11月11日)

下面的Captive Network已在iOS 9的最新版本中重新启用。

  • CNCopySupportedInterfaces
  • CNCopyCurrentNetworkInfo

更新(9月1日)(2015年第16号)

如果您仍然喜欢使用NetworkExtension,并且苹果允许您添加这些权利,那么您可以这样做来获取wifi信息:

代码语言:javascript
复制
for(NEHotspotNetwork *hotspotNetwork in [NEHotspotHelper supportedNetworkInterfaces]) {
    NSString *ssid = hotspotNetwork.SSID;
    NSString *bssid = hotspotNetwork.BSSID;
    BOOL secure = hotspotNetwork.secure;
    BOOL autoJoined = hotspotNetwork.autoJoined;
    double signalStrength = hotspotNetwork.signalStrength;
}

NetworkExtension为您提供了一些额外的信息,如安全、自动连接或信号强度。它还允许您在后台模式下将凭据设置为wifis,当用户扫描wifis时。

票数 32
EN

Stack Overflow用户

发布于 2018-09-10 19:57:31

abdullahselek的答案即使是Swift 4.1和4.2也是正确的。

请注意,在iOS 12中,您必须转到应用程序项目的功能部分,并启用Access WiFi信息功能。它将向项目添加一个权限项,并允许函数调用CNCopyCurrentNetworkInfo正常工作。

如果不执行此操作,则该函数只返回零。将不会在运行时显示有关丢失的权限的错误或警告。

有关更多信息,请参见下面指向苹果文档的链接。

https://developer.apple.com/documentation/systemconfiguration/1614126-cncopycurrentnetworkinfo

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31555640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档