CNCopyCurrentNetworkInfo с iOS 13 - PullRequest
       102

CNCopyCurrentNetworkInfo с iOS 13

1 голос
/ 13 июня 2019

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.

Спасибо за вашу помощь!

1 Ответ

1 голос
/ 18 июня 2019

Как я уже говорил на форумах разработчиков Apple использование CNCopyCurrentNetworkInfo теперь ограничено.

Выезд Сессия WWDC 19 713 , Достижения в области сетевых технологий, Часть 2 (возможно, 75% пути к презентации). CNCopyCurrentNetworkInfo теперь доступно вашему приложению только в трех случаях:

  • Приложения с разрешением доступа к местоположению
  • Ваше приложение является активным приложением VPN
  • Ваше приложение настроило сеть WiFi, которую устройство использует в данный момент, через NEHotspotConfiguration

Если вы не выполняете хотя бы одно из этих условий, CNCopyCurrentNetworkInfo всегда вернет nil в iOS 13.

...