iOS 13 无法获取 WiFi 名称(SSID)问题解决方案 iOS 13 中,获取 WiFi 名称(SSID)的接口失效,返回固定值"WLAN",这是因为苹果对用户隐私保护的考虑,因为 WiFi 信息可以定位到用户的地理位置。因此,在 iOS 13 中,如果想要继续获取 WiFi 名称,需要在调用接口前判断用户是否同意 App 使用地理位置信息。 解决方案: 1. Engineering 头文件导入 `#import <SystemConfiguration/CaptiveNetwork.h>` 2. 实现如下代码,即可返回当前连接的网络名称 ```objective-c - (NSString *)currentWifiSSID { NSString *ssid = nil; NSArray *ifs = (__bridge id)CNCopySupportedInterfaces(); for (NSString *ifname in ifs) { NSDictionary *info = (__bridge id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifname); if (info[@"SSID"]) { ssid = info[@"SSID"]; } } return ssid; } ``` 在上面的代码中,我们使用 `CNCopySupportedInterfaces()` 函数获取当前支持的网络接口,然后遍历这些接口,使用 `CNCopyCurrentNetworkInfo()` 函数获取当前连接的网络信息,并从中提取 SSID 信息。 在 iOS 13 中,如果想要获取 WiFi 名称,需要首先判断用户是否同意 App 使用地理位置信息,可以使用以下代码: ```objective-c NSString* phoneVersion = [[UIDevice currentDevice] systemVersion]; CGFloat version = [phoneVersion floatValue]; if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined && version >= 13) { self.locationManager = [[CLLocationManager alloc] init]; [self.locationManager requestWhenInUseAuthorization]; } ``` 在上面的代码中,我们首先获取当前系统的版本,然后判断用户是否已经授予 App 使用地理位置信息的权限,如果没有,则请求用户授予权限。 总结,获取 WiFi 名称(SSID)需要在 iOS 13 中考虑用户隐私保护问题,需要在调用接口前判断用户是否同意 App 使用地理位置信息,并使用 `CNCopySupportedInterfaces()` 和 `CNCopyCurrentNetworkInfo()` 函数获取当前连接的网络名称。 知识点扩展: * iOS 获取当前的 WiFi 名称 * 使用 `CNCopySupportedInterfaces()` 和 `CNCopyCurrentNetworkInfo()` 函数获取当前连接的网络名称 * 在 iOS 13 中,获取 WiFi 名称需要考虑用户隐私保护问题 * 使用 `CLLocationManager` 请求用户授予权限 通过本文,读者可以了解如何解决 iOS 13 中获取 WiFi 名称(SSID)问题,并且了解相关的知识点和解决方案。如果您有任何疑问,请随时留言。
- 粉丝: 13
- 资源: 955
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助