Jaebi의 Binary는 호남선

Swift Wi-Fi Configuration 본문

Swift

Swift Wi-Fi Configuration

jaebijae 2024. 6. 19. 12:33

목차

iOS는 주위의 사용가능한 모든 Wi-Fi network 이름과 정보를 가져오는 기능을 제공하지 않음
하지만 현재 연결된 network의 SSID를 가져올 수는 있음

Preliminary

  • iOS11 SDK or later
  • Xcode에서 Hotspot Configuration Capability 설정 필요 (Signing & Capabilities)
  • Wi-Fi에 연결하기 위해서는 target network의 SSID와 password를 알고 있어야함

Wi-Fi Configuration

  • 사용자가 특정 Wi-Fi network에 연결하거나 Wi-Fi를 사용하는 accessory 설정등 기능
  • Wi-Fi Configuration
    • Persistent configuration: Settings에서 Wi-Fi 변경과 동일
    • Join-once configuration: 일시적으로 Wi-Fi network 변경
  • 지원 인증 모델:
    • 인증 없는 SSID
    • password-based 인증 SSID (WEP, WPA, WPA2)
    • EAP 인증 SSID
    • EAP 인증 Hotspot 2.0

NEHotspotConfiguration

  • 새 Hotspot 구성을 만들거나 구성된 Network를 업데이트 하려고 하면 사용자 승인 필요
  • 여러 initializer 제공 - 위 지원 인증 모델 적용
  • `NEHotspotConfigurationManager`
    • apply - Wi-Fi network configuration 추가 및 업데이트 + permission 확인 + join
    • removeConfiguration - 추가된 Wi-Fi network configuration 삭제 기능
    • getConfiguration - 구성한 Wi-Fi network 의 SSID나 hotspot domain name을 가져옴 + completion handler 실행
  • `NEHotspotConfigurationError`
    • 0 ~ 15 까지의 다양한 Error Code
    • `case userDenied = 7`
      • 사용자가 permission 을 주지 않을때 발생
    • `case alreadyAssociated = 13`
      • 이미 target network에 연결되어 있을때 발생
  • 모든 작업이 끝나면 disconnect
    • `removeConfiguration` 호출
  • 연결 시도:
    • `NSHotspotConfiguration` 생성 및 초기화
    • `NEHotspotConfigurationManager` 싱글톤 인스턴스로 접근하여 apply 메서드 호출
    • `apply`의 completionHandler는 성공 여부를 리턴하지 않음 → 대신 연결 시도 결과 `Error`를 받은 후 `NEHotspotNetwork`의 `fetchCurrent`로 현재 Wi-Fi 정보를 확인 할 수 있음 (아래 추가 설명)

현재 Wi-Fi 상태 가져오기

  • `NEHotspotNetwork` - 명령 또는 응답과 관련된 Wi-Fi 네트워크 정보
  • Xcode에서 Access WiFi Information Capability 설정 필요 (Signing & Capabilities)
  • `fetchCurrent` 현재 Wi-Fi network의 SSID, BSSID, security type등 정보를 가져옴
    • synchronous: `class func fetchCurrent(completionHandler: @escaping (NEHotspotNetwork?) -> Void)`
    • asynchronous: `class func fetchCurrent() async -> NEHotspotNetwork?`

Reference

 

Wi-Fi configuration | Apple Developer Documentation

Add persistent Wi-Fi configurations, or temporarily move the device to a specific Wi-Fi network.

developer.apple.com

 

 

'Swift' 카테고리의 다른 글

Swift - 문법 (접근 제어)  (0) 2024.07.20
Swift Local Network Connection  (0) 2024.06.19
WWDC 2024 - WeatherKit Sample App  (0) 2024.06.13
WeatherKit 사용 (WWDC 2024)  (1) 2024.06.13
Swift - 문법 (Property Wrappers)  (0) 2024.06.12