CNCopyCurrentNetworkInfo를 통해 현재 디바이스에서 사용중인 네트워크의 정보를 가져올 수 있다.
CNCopyCurrentNetworkInfo사용 전에 알아야 할 것
아래 네 가지의 조건중 하나를 충족해야 정상적인 동작이 가능하다.
1. 앱이 위치권한(core location)수집에 대한 사용자의 수집을 받아야 한다.
2. 앱이 NEHotspotConfiguration API를 통해 네트워크를 구성한 경우
3. VPN 활성화
4. 응용 프로그램에 활성 NEDNSSettingsManager 구성이 설치된 경우(NEDNSSettingManager ? 잘 모름)
요구사항이 충족된다면 네트워크 정보를 리턴하고, 그러지 않을 경우 null을 갖는다.
Deprecated
CNCopyCurrentNetworkInfo는 최신 OS버전에서 사용이 안된다.
14.0 이후부터 아래 내용으로 대치된다.
NEHotspotNetwork를 이용한 현재 Wi-Fi 상태 가져오기
Wi-Fi연결에 대한 이전 글에 이은 내용 NEHotspotNetwork는 명령 또는 응답과 관련된 Wi-Fi네트워크에 대한 정보다. 명령또는 응답이라는 말이 무엇을 말하는지 잘 모르겠지만... 아래와 같은 속성을 지
greate-future.tistory.com
Important! "Access WiFi Information"
Access WiFi Information을 추가 하라고 한다.
아래 코드는 위치권한을 얻은 후 정상동작 한다.
struct NetworkInfo {
var interface: String
var success: Bool = false
var ssid: String?
var bssid: String?
}
import Foundation
import SystemConfiguration.CaptiveNetwork
final class SSID {
func fetchNetworkInfo() -> [NetworkInfo] {
if let interfaces: NSArray = CNCopySupportedInterfaces() {
var networkInfos = [NetworkInfo]()
for interface in interfaces {
let interfaceName = interface as! String
var networkInfo = NetworkInfo(interface: interfaceName,
success: false,
ssid: nil,
bssid: nil)
if let dict = CNCopyCurrentNetworkInfo(interfaceName as CFString) as NSDictionary? {
networkInfo.success = true
networkInfo.ssid = dict[kCNNetworkInfoKeySSID as String] as? String
networkInfo.bssid = dict[kCNNetworkInfoKeyBSSID as String] as? String
}
networkInfos.append(networkInfo)
}
return networkInfos
}
return []
}
}
print(SSID.fetchNetworkInfo().first)
'난 iOS개발자 > iOS' 카테고리의 다른 글
위치 정보 가져오기(CoreLocation, CLLocationManager) (0) | 2022.02.14 |
---|---|
JsonString 에서 Dictionary로 변환 (0) | 2022.01.27 |
NEHotspotNetwork를 이용한 현재 Wi-Fi 상태 가져오기 (0) | 2021.12.20 |
NEHotspotConfigurationManager를 이용한 Wi-Fi 연결하기 (0) | 2021.12.20 |
연락처 저장화면 호출하기 CNContactViewController (0) | 2021.07.29 |