Swift, App에서 WiFi 변경하기

Third Part App 에서 Global Setting 접근하여 실행하기

Posted by MinJun on Saturday, June 9, 2018 Tags: Swift   3 minute read

Code

  • 조건
    1. 개발자 계정을 통하여 NetworkExtension, HotSpot Configuration 설정이 필요합니다.
    2. SSID와 Password 입력하여 접속 시도
// 1 
// Capabiliteis 에서 NetworkExtension, Hotspot Configuration 설정후
import NetworkExtension
import SystemConfiguration.CaptiveNetwork

// 2: NEHotspot Configuration 인스턴스로 접근 접근 시도 
var wifiConfiguration: NEHotspotConfiguration?

// 3
func someButton(ssid: String, password: String) {
	wifiConfiguration = NEHotspotConfiguration(
		ssid: ssid,
		passphrase: password,
		isWEP: false)
		wifiConfiguration?.joinOnce = false
		
	falseNEHotspotConfigurationManager.shared.apply(wifiConfiguration!) { error in
		if error == nil {
			print("WiFi 연결성공")
		}else {
			print(error.debugDescription)
		}
	}
}

시작 목적

여러개의 WiFi회선을 사용할수있는 환경에서 현재위치에서 가장 빠른 WiFi를 사용하고 싶다. 그리고 편안하게 WiFi를 바꾸어서 접속하고 싶다라는 생각을 가지고 검색 시작!

  1. 먼저 내 근처에 있는 WiFi의 SSID목록부터 출력해보자!
  2. 그러면 WiFi접속중일때, 접속중인 SSID를 가져와서 password를 저장해놓고, 필요할때 어떤 터치 한번으로 WiFi를 스왑해주자!
    • Today Extension에서 바꾸어주자
      • WiFi스왑시, 유저의 승인이 있어야 해서 Today Extension에서는 안됨ㅠㅠ
      • 결론적으로 망했습니다..
  3. 그러려면 현재 Network상태를 알아야합니다.
    • 현재 Network가능 한지 불가능한지,
    • Cellular상태인지, WiFi상태인지.
  4. WiFi 접속 시도
    • NEHotspotConfiguration
    • NEHotspotConfigurationManager


더 자세한 코드는..! SimplyConnectWiFi를 참조해주세요.


더 알아보면 재미있는 것

  • P2P Networking(Peer-to-peer networking) — If your goal is to communicate with other nearby devices, you should look at:
    • NSNetService
    • Multipeer Connectivity

Reference