直到今天,我使用CaptiveNetwork接口来显示当前连接的Wifi的名称。iOS 9的预发布引用已经声明,CaptiveNetwork方法现在已经被实践了,但是它们在开始时仍然有效。
最新版本的苹果似乎已经屏蔽了这个电话(可能是因为隐私问题吧?)
还有其他方法来获取当前Wifi的名称吗?
直到今天,我都是这样获得SSID的,但是现在你只能得到零:
#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"];
}
} 发布于 2015-09-10 15:46:55
在通用汽车的iOS 9,似乎这是再次启用。实际上,在在线文档中,它甚至没有被列为不推荐使用的文件,但是CaptiveNetwork头文件确实有以下内容:
CNCopySupportedInterfaces (void) __OSX_AVAILABLE_BUT_DEPRECATED_MSG(__MAC_10_8, __MAC_NA, __IPHONE_4_1, __IPHONE_9_0, CN_DEPRECATION_NOTICE);因此,它正在iOS 9通用汽车上工作,但不确定它能运行多久:)
发布于 2015-07-23 14:46:58
将您的应用程序注册为Hotspot助手。
#import <NetworkExtension/NetworkExtension.h>
NSArray * networkInterfaces = [NEHotspotHelper supportedNetworkInterfaces];
NSLog(@"Networks %@",networkInterfaces); 更新(9月1日)(2015年11月11日)
下面的Captive Network已在iOS 9的最新版本中重新启用。
更新(9月1日)(2015年第16号)
如果您仍然喜欢使用NetworkExtension,并且苹果允许您添加这些权利,那么您可以这样做来获取wifi信息:
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时。
发布于 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
https://stackoverflow.com/questions/31555640
复制相似问题