투케이2K

567. (ios/swift5) NEHotspotConfigurationManager 사용해 특정 WIFI 와이파이 SSID 연결 해제 수행 본문

IOS

567. (ios/swift5) NEHotspotConfigurationManager 사용해 특정 WIFI 와이파이 SSID 연결 해제 수행

투케이2K 2024. 11. 22. 14:18

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT5

 

[소스 코드]

 

// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------

- 언어 : Swift


- 개발 툴 : Xcode


- 사전 설명 :

  >> NEHotspotConfigurationManager  는 iOS 11 이상에서 사용할 수 있으며, 사용자가 Wi-Fi 네트워크에 연결을 시도할 때 앱에서 요청을 처리할 수 있도록 도와줍니다

  >> NEHotspotConfigurationManager 방법을 통해 Wi-Fi에 연결할 수 있지만, 사용자가 승인해야 하며 앱이 Wi-Fi 정보를 알지 못하도록 제한이 있습니다


- 사전 권한 설정 : info.plist

  <key>NSLocationWhenInUseUsageDescription</key>
  <string>앱에서 Wi-Fi 연결을 설정하려면 위치 권한이 필요합니다.</string>


- 사전 Xcode 프로젝트에서 유료 결제 개발자 계정 사용 Capabillity Hotspot Configuration 사용 설정

  >> https://blog.naver.com/kkh0977/223669166907


- 사전 Xcode 프로젝트에서 Capabillity 개발 권한 추가 entitlements 속성 key , value 값 확인 방법

  >> https://blog.naver.com/kkh0977/223669259799

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[소스 코드]
// --------------------------------------------------------------------------------------

    // -----------------------------------------------------------------------------------------
    // MARK: - [SEARCH FAST] : observableRemoveWifSsid : 특정 와이파이 SSID 연결 해제 수행
    // -----------------------------------------------------------------------------------------
    func observableRemoveWifSsid(ssid:String, completion: @escaping (Bool)->()) {
        
        /*
        // -----------------------------------------
        [observableRemoveWifSsid 메소드 설명]
        // -----------------------------------------
        1. 특정 와이파이 SSID 연결 해제 수행
        // -----------------------------------------
        2. 호출 방법 :
         
         C_Wifi_Ap_Module().observableRemoveWifSsid(ssid: "KKH"){(result) in
             
             S_Log._F_(description: "특정 와이파이 SSID 연결 해제 수행", data: ["\(result)"])
             
         }
         
        // -----------------------------------------
        3. 필요 import :
         
         import NetworkExtension
         import SystemConfiguration.CaptiveNetwork
        // -----------------------------------------
        4. 필요 권한 : 위치 권한 Location
         
         Privacy - Location Always Usage Description
         Privacy - Location Always and When In Use Usage Description
        // -----------------------------------------
        5. MARK: xcode 프로젝트 Capabillity 사용 설정 방법 : [Hotspot Configuration]
         
         - 사전) 유료 결제를 진행한 개발자 계정이 필요 (or 개발자 초대)
         - Xcode 프로젝트 설정 >> Capabillity >> Hotspot Configuration 추가
         - 프로젝트 entitlements 에서 추가한 Hotspot Configuration 권한이 정상 표시 되는 것 확인
         - 설정 및 적용 참고 사이트 :
         https://blog.naver.com/kkh0977/223669166907
         https://blog.naver.com/kkh0977/223669259799
        // -----------------------------------------
        */


        // [변수 선언]
        var returnData = false
        var M_LOG = ""

        
        // [로직 처리 수행]
        DispatchQueue.main.async {
            S_Log._D_(description: "특정 와이파이 SSID 연결 해제 수행", data: nil)
            
            // [인풋 데이터 널 체크]
            if C_Util().stringNotNull(str: ssid) == true {
                
                // [삭제 수행]
                NEHotspotConfigurationManager.shared.removeConfiguration(forSSID: ssid)
                
                // [리스트 확인해서 삭제 된 내역 확인]
                NEHotspotConfigurationManager.shared.getConfiguredSSIDs { (ssidsArray) in
                    
                    if ssidsArray.contains(ssid) == false { // [삭제 됨]
                        M_LOG = "[Success] : Ssid Remove"
                        returnData = true
                        
                        S_Log._D_(description: "특정 와이파이 SSID , PW 연결 해제 성공", data: [ "M_LOG :: \(M_LOG)" ])
                        completion(returnData) // [콜백 반환]
                        return
                        
                    }
                    else {
                        M_LOG = "[Error] : Search Ssid List Found Ssid"
                        
                        S_Log._D_(description: "특정 와이파이 SSID , PW 연결 리스트 확인 실패", data: [ "M_LOG :: \(M_LOG)" ])
                        completion(returnData) // [콜백 반환]
                        return
                    }
                    
                }
                
            }
            else {
                M_LOG = "[Error] : Input Ssid Is Null"
                
                S_Log._D_(description: "특정 와이파이 SSID , PW 연결 해제 실패", data: [ "M_LOG :: \(M_LOG)" ])
                completion(returnData) // [콜백 반환]
                return
            }

        }
    }

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[결과 출력]
// --------------------------------------------------------------------------------------

================================================================
LOG :: TYPE :: LOG :: 🟢
-------------------------------------------------
LOG :: CLASS PLACE :: C_Wifi_Ap_Module.swift :: observableRemoveWifSsid(ssid:completion:) :: 785
-------------------------------------------------
LOG :: NOW TIME :: 2024-11-22 14:11:06
-------------------------------------------------
LOG :: DESCRIPTION :: 특정 와이파이 SSID , PW 연결 해제 성공
-------------------------------------------------
LOG :: M_LOG :: [Success] : Ssid Remove
================================================================

// --------------------------------------------------------------------------------------

 

반응형
Comments