Notice
Recent Posts
Recent Comments
Link
투케이2K
47. (ios/swift) 세마포어 사용해 현재 연결된 네트워크 상태 체크 실시 - NWPathMonitor , 동기 처리 본문
[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT
[소스 코드]
// MARK: - [필요 import 부분]
// import Network
// MARK: - [현재 연결된 네트워크 상태 확인 메소드]
let monitor = NWPathMonitor()
static var checkNetworkValue = false
func getWhatOfNetwork() -> Bool {
self.monitor.start(queue: DispatchQueue.global())
// [세마포어 선언 : 프로그램 로직을 동기화 구현]
let semaphore = DispatchSemaphore(value: 0) // [value 0 값은 대기 상태 선언]
self.monitor.pathUpdateHandler = { path in
if path.status == .satisfied { // 네트워크가 연결된 경우
if path.usesInterfaceType(.wifi) {
print("")
print("===============================")
print("[C_StateCheck >> getWhatOfNetwork() :: 현재 사용중인 네트워크 상태 확인 실시]")
print("[연결 상태 :: \("와이파이")]")
print("===============================")
print("")
// [세마포어 신호 알림]
C_StateCheck.checkNetworkValue = true // 변수에 저장
semaphore.signal()
}
else if path.usesInterfaceType(.cellular) {
print("")
print("===============================")
print("[C_StateCheck >> getWhatOfNetwork() :: 현재 사용중인 네트워크 상태 확인 실시]")
print("[연결 상태 :: \("모바일")]")
print("===============================")
print("")
// [세마포어 신호 알림]
C_StateCheck.checkNetworkValue = true // 변수에 저장
semaphore.signal()
}
}
else { // 네트워크가 연결되지 않은 경우
print("")
print("===============================")
print("[C_StateCheck >> getWhatOfNetwork() :: 현재 사용중인 네트워크 상태 확인 실시]")
print("[연결 상태 :: \("없음")]")
print("===============================")
print("")
// [세마포어 신호 알림]
C_StateCheck.checkNetworkValue = false // 변수에 저장
semaphore.signal()
}
}
// [세마포어 확인 대기]
semaphore.wait()
print("")
print("===============================")
print("[C_StateCheck >> getWhatOfNetwork() :: 네트워크 연결 확인 상태 리턴 반환 값 확인]")
print("[return :: \(C_StateCheck.checkNetworkValue)]")
print("===============================")
print("")
return C_StateCheck.checkNetworkValue
}
[결과 출력]
반응형
'IOS' 카테고리의 다른 글
Comments