Apple изменила некоторые вещи, касающиеся WiFi с iOS 13. Если вы хотите использовать CNCopyCurrentNetworkInfo, ваше приложение должно иметь один из следующих
- Приложения с разрешением доступа к местоположению
- Ваше приложение является активным приложением VPN
- Ваше приложение настроило сеть WiFi, которую устройство в настоящее время использует через NEHotspotConfiguration
Источник: 19-я сессия WWDC 713
Я настраиваю сеть с помощью NEHotspotConfiguration, но больше не могу получить текущий SSID после этого.
Следующий код отлично работал с iOS 12:
/// retrieve the current SSID from a connected Wifi network
private func retrieveCurrentSSID() -> String? {
let interfaces = CNCopySupportedInterfaces() as? [String]
let interface = interfaces?
.compactMap { [weak self] in self?.retrieveInterfaceInfo(from: $0) }
.first
return interface
}
/// Retrieve information about a specific network interface
private func retrieveInterfaceInfo(from interface: String) -> String? {
guard let interfaceInfo = CNCopyCurrentNetworkInfo(interface as CFString) as? [String: AnyObject],
let ssid = interfaceInfo[kCNNetworkInfoKeySSID as String] as? String
else {
return nil
}
return ssid
}
С iOS 13 CNCopyCurrentNetworkInfo
всегда возвращает ноль.
Мое приложение имеет возможность доступа к информации Wi-Fi.
Спасибо за вашу помощь!