투케이2K

591. (ios/swift5) [기능 보완] getWifiSsid : 현재 연결 된 와이파이 SSID 정보 확인 수행 본문

IOS

591. (ios/swift5) [기능 보완] getWifiSsid : 현재 연결 된 와이파이 SSID 정보 확인 수행

투케이2K 2024. 12. 1. 20:43

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT5

 

[소스 코드]

 

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

- 언어 : Swift


- 개발 툴 : Xcode


- 기술 구분 : 유틸 파일

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






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

    func getWifiSsid(completion: @escaping (String)->()) {
        
        /*
        // -----------------------------------------
        [getWifiSsid 메소드 설명]
        // -----------------------------------------
        1. 현재 연결 된 와이파이 SSID 정보 확인 수행
        // -----------------------------------------
        2. 호출 방법 :
         
         C_Wifi_Ap_Module().getWifiSsid(){(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 프로젝트 NEHotspotNetwork 사용 설정 방법 : [Access Wi-Fi Information]
         
         - 사전) 유료 결제를 진행한 개발자 계정이 필요 (or 개발자 초대)
         - Xcode 프로젝트 설정 >> Capabillity >> Access Wi-Fi Information 추가
         - 프로젝트 entitlements 에서 추가한 Access Wi-Fi Information 권한이 정상 표시 되는 것 확인
         - 프로젝트 설정 참고 사이트 : 
         https://blog.naver.com/kkh0977/223667701982
         https://blog.naver.com/kkh0977/223669259799
        // -----------------------------------------
        */


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

        
        // [로직 처리 수행]
        DispatchQueue.main.async {

            if C_StateCheck().isWifiConnected() == true { // [와이파이 연결 된 상태]

                // [IOS 버전 분기 처리 수행]
                if #available(iOS 14.0, *) {
                    NEHotspotNetwork.fetchCurrent { network in
                        if let network = network {
                            
                            // ------------------------------------------
                            // network.ssid.description
                            // network.bssid.description
                            // ------------------------------------------
                            M_LOG = "[Success] : NEHotspotNetwork.fetchCurrent Network Search"
                            returnData = "\(network.ssid.description)"

                            S_Log._W_(description: "현재 연결 된 와이파이 SSID 정보 확인 성공 :: Ios Version Up iOS 14", data: [ "M_LOG :: \(M_LOG)", "RETURN :: \(returnData)" ])

                            // [콜백 반환]
                            completion(returnData)
                            return

                        } else {
                            M_LOG = "[Error] : NEHotspotNetwork.fetchCurrent Network Is Nil"

                            S_Log._E_(description: "현재 연결 된 와이파이 SSID 정보 확인 실패 :: Ios Version Up iOS 14", data: [ "M_LOG :: \(M_LOG)" ])

                            // [콜백 반환]
                            completion(returnData)
                            return
                        }
                    }
                }
                else {
                    
                    var ssid = ""
                    var bssid = ""
                    
                    if let interfaces = CNCopySupportedInterfaces() as NSArray? {
                        for interface in interfaces {
                            if let interfaceInfo = CNCopyCurrentNetworkInfo(interface as! CFString) as NSDictionary? {
                                
                                ssid = interfaceInfo[kCNNetworkInfoKeySSID as String] as? String ?? ""
                                bssid = interfaceInfo[kCNNetworkInfoKeyBSSID as String] as? String ?? ""
                                
                            }
                        }
                    }
                    
                    
                    if C_Util().stringNotNull(str: ssid) == true {
                        
                        M_LOG = "[Success] : CNCopySupportedInterfaces Network Search"
                        returnData = "\(ssid)"

                        S_Log._W_(description: "현재 연결 된 와이파이 SSID 정보 확인 성공 :: Ios Version Under iOS 14", data: [ "M_LOG :: \(M_LOG)", "RETURN :: \(returnData)" ])

                        // [콜백 반환]
                        completion(returnData)
                        return
                        
                    }
                    else {
                        M_LOG = "[Error] : CNCopySupportedInterfaces Network Ssid Is Nil"

                        S_Log._E_(description: "현재 연결 된 와이파이 SSID 정보 확인 실패 :: Ios Version Under iOS 14", data: [ "M_LOG :: \(M_LOG)" ])

                        // [콜백 반환]
                        completion(returnData)
                        return
                    }
                    
                }
            }
            else { // [와이파이 연결 안된 상태]
                M_LOG = "[Error] : Wifi Connect False"

                S_Log._E_(description: "현재 연결 된 와이파이 SSID 정보 확인 실패", data: [ "M_LOG :: \(M_LOG)" ])

                // [콜백 반환]
                completion(returnData)
                return
            }

        }
    }

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






// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

[Xcode 프로젝트에서 유료 결제 개발자 계정 사용 Capabillity Access Wi-Fi Information 사용 설정 - 와이파이 정보]

https://blog.naver.com/kkh0977/223667701982


[Xcode 프로젝트에서 유료 결제 개발자 계정 사용 Capabillity Hotspot Configuration 사용 설정 - 와이파이 연결]

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


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

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

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

 

반응형
Comments