CaptiveNetwork 被弃用且 Wifi 名称调用已被阻止后,如何在 iOS9 中获取 Wifi SSID

iosWIFI

1个回答

写回答

垚000

2025-07-09 16:55

+ 关注

IOS
IOS

在 IOS9 中,获取 WIFI SSID 的方式发生了变化。在此之前,我们可以使用 CaptiveNetwork 这个框架来获取当前连接的 WIFI SSID。然而,由于安全和隐私的考虑,苹果在 IOS9 中已经将 CaptiveNetwork 标记为被弃用,并且禁止了直接调用 WIFI 名称。因此,我们需要寻找其他方法来获取 WIFI SSID。

使用 NEHotspotNetwork 类

在 IOS9 及以上的版本中,我们可以使用 NEHotspotNetwork 这个类来获取当前连接的 WIFI SSID。NEHotspotNetwork 类提供了一个共享的接口,可以用于获取当前连接的 WIFI 信息。

首先,我们需要导入 NetworkExtension 框架,并且在代码中引入 NEHotspotNetwork.h 头文件。然后,我们可以通过调用 sharedNetwork 方法来获取一个 NEHotspotNetwork 的实例,然后通过该实例的 SSID 属性来获取当前连接的 WIFI SSID。

下面是一个获取 WIFI SSID 的示例代码:

Objective-C

#import <NetworkExtension/NEHotspotNetwork.h>

- (NSString *)currentWIFISSID {

NSString *ssid = nil;

NSArray *interfaces = CFBridgingRelease(CNCopySupportedInterfaces());

for (NSString *interfaceName in interfaces) {

NSDictionary *networkInfo = CFBridgingRelease(CNCopyCurrentNetworkInfo((__bridge CFStringRef)interfaceName));

if (networkInfo) {

ssid = networkInfo[@"SSID"];

break;

}

}

return ssid;

}

在这个示例中,我们使用 CNCopySupportedInterfaces 函数来获取当前设备支持的网络接口。然后,我们遍历每个接口,通过 CNCopyCurrentNetworkInfo 函数来获取当前接口的网络信息。如果当前接口有网络信息,我们就可以从网络信息中获取到 WIFI SSID。

注意事项

需要注意的是,获取 WIFI SSID 的操作可能会涉及到用户隐私,因此在使用 NEHotspotNetwork 类时,需要获取用户的授权。在 Info.plist 文件中,我们需要添加一个 NSHotspotUsageDescription 权限描述,用于向用户说明我们需要获取 WIFI 信息的原因。

在使用 NEHotspotNetwork 类获取 WIFI SSID 之前,我们需要调用 [NEHotspotNetworkManager.sharedManager setEnabled:YES] 方法来启用 NEHotspotNetwork 功能。

在 IOS9 及以上的版本中,由于 CaptiveNetwork 被弃用且直接调用 WIFI 名称被禁止,我们需要使用 NEHotspotNetwork 类来获取 WIFI SSID。通过 NEHotspotNetwork 类,我们可以获取当前连接的 WIFI 信息,并从中提取出 WIFI SSID。在使用 NEHotspotNetwork 类时,需要获取用户的授权,并在 Info.plist 文件中添加相应的权限描述。

以上就是在 IOS9 中获取 WIFI SSID 的方法及注意事项。希望本文对你有所帮助!

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号