Notice
Recent Posts
Recent Comments
Link
투케이2K
564. (ios/swift5) NWPathMonitor pathUpdateHandler 사용해 현재 네트워크 안정적 상태 여부 확인 본문
IOS
564. (ios/swift5) NWPathMonitor pathUpdateHandler 사용해 현재 네트워크 안정적 상태 여부 확인
투케이2K 2024. 11. 22. 08:57[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT5
[소스 코드]
// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------
- 언어 : Swift
- 개발 툴 : Xcode
- 사전 권한 설정 : info.plist
<key>NSLocationWhenInUseUsageDescription</key>
<string>앱에서 Wi-Fi 연결을 설정하려면 위치 권한이 필요합니다.</string>
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[소스 코드]
// --------------------------------------------------------------------------------------
// -----------------------------------------------------------------------------------------
// MARK: - [SEARCH FAST] : getNetworkMonitorStatus : 현재 네트워크 안정적 상태 여부 확인
// -----------------------------------------------------------------------------------------
func getNetworkMonitorStatus() -> Bool {
/*
// -----------------------------------------
// [getNetworkMonitorStatus 메소드 설명]
// -----------------------------------------
1. 필요 import : import Network
// -----------------------------------------
2. 호출 방법 : if C_Wifi_Ap_Module().getNetworkMonitorStatus() == true {} else {}
// -----------------------------------------
3. 애플 사이트 : https://developer.apple.com/documentation/network/nwpathmonitor
// -----------------------------------------
*/
// [리턴 변수 선언]
var returnData = false
var M_LOG = ""
// [로직 처리 수행]
if #available(iOS 12, *) {
// [현재 네트워크 연결 상태 확인 객체 선언]
let monitor = NWPathMonitor()
// [세마포어 선언 : 프로그램 로직을 동기화 구현 : value 0 값은 대기 상태 선언]
let semaphore = DispatchSemaphore(value: 0)
// [네트워크 연결 상태 확인 부분]
monitor.pathUpdateHandler = { path in
if path.status == .satisfied { // [네트워크가 연결된 경우]
// [리턴 값 삽입]
M_LOG = "[Status] :: Satisfied !!"
returnData = true
// [네트워크 상태 확인 종료]
monitor.cancel()
// [세마포어 신호 알림]
semaphore.signal()
}
else { // [네트워크가 연결되지 않은 경우]
// [리턴 값 삽입]
M_LOG = "[Status] :: UnSatisfied .."
returnData = true
// [네트워크 상태 확인 종료]
monitor.cancel()
// [세마포어 신호 알림]
semaphore.signal()
}
}
// [네트워크 연결 상태 확인 수행]
monitor.start(queue: DispatchQueue.global())
// [세마포어 확인 대기]
semaphore.wait()
}
else {
M_LOG = "[Error] : Ios Version Under iOS 12"
}
// [로그 출력 수행]
S_Log._D_(description: "현재 네트워크 안정적 상태 여부 확인", data: [
"M_LOG :: \(M_LOG)",
"RETURN :: \(returnData)"
])
// [리턴 반환 수행]
return returnData
}
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[결과 출력]
// --------------------------------------------------------------------------------------
================================================================
LOG :: TYPE :: LOG :: 🟢
-------------------------------------------------
LOG :: CLASS PLACE :: C_Wifi_Ap_Module.swift :: getNetworkMonitorStatus() :: 429
-------------------------------------------------
LOG :: NOW TIME :: 2024-11-22 08:51:02
-------------------------------------------------
LOG :: DESCRIPTION :: 현재 네트워크 안정적 상태 여부 확인
-------------------------------------------------
LOG :: M_LOG :: [Status] :: Satisfied !!
-------------------------------------------------
LOG :: RETURN :: true
================================================================
// --------------------------------------------------------------------------------------
반응형
'IOS' 카테고리의 다른 글
Comments