Notice
Recent Posts
Recent Comments
Link
투케이2K
179. (Objective-C/objc) [간단 소스] NWPathMonitor 사용해 현재 연결 된 네트워크 상태 확인 본문
Objective-C
179. (Objective-C/objc) [간단 소스] NWPathMonitor 사용해 현재 연결 된 네트워크 상태 확인
투케이2K 2025. 2. 1. 09:56[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : OBJECTIVE-C
[소스 코드]
// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------
- 언어 : Objective-c
- 개발 툴 : Xcode
- 기술 구분 : 간단 소스 / NWPathMonitor / Network
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[호출 방법 소스 코드]
// --------------------------------------------------------------------------------------
// [NetworkMonitor 클래스 객체 생성]
NetworkMonitor *networkMonitor = [[NetworkMonitor alloc] init];
// [네트워크 모니터링 start]
[networkMonitor startMonitoring];
// [네트워크 모니터링 stop]
// [networkMonitor stopMonitoring];
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[클래스 소스 코드]
// --------------------------------------------------------------------------------------
#import <Foundation/Foundation.h>
#import <Network/Network.h>
@interface NetworkMonitor : NSObject
@property (nonatomic, strong) NWPathMonitor *pathMonitor; // [NWPathMonitor 변수 선언]
@property (nonatomic, strong) dispatch_queue_t monitorQueue; // [비동기 수행 변수 선언]
- (void)startMonitoring;
- (void)stopMonitoring;
@end
@implementation NetworkMonitor
// [클래스 생성자 초기화 init]
- (instancetype)init {
self = [super init];
if (self) {
_pathMonitor = [[NWPathMonitor alloc] init];
_monitorQueue = dispatch_queue_create("NetworkMonitorQueue", DISPATCH_QUEUE_SERIAL);
}
return self;
}
// [네트워크 모니터링 start 수행 메소드]
- (void)startMonitoring {
NSLog(@"startMonitoring :: 네트워크 모니터링 시작 수행");
[self.pathMonitor setUpdateHandler:^(NWPath * _Nonnull path) {
if (path.status == NWPathStatusSatisfied) {
NSLog(@">>>>>>>>>>>>>>>> 네트워크 상태 확인 :: Network is available :: 네트워크 사용 가능 상태 >>>>>>>>>>>>>>>>");
if (path.usesInterfaceType(NWInterfaceTypeWiFi)) {
NSLog(@"네트워크 상태 확인 :: Connected Wi-Fi :: 와이파이 연결 상태");
} else if (path.usesInterfaceType(NWInterfaceTypeCellular)) {
NSLog(@"네트워크 상태 확인 :: Connected Cellular :: 셀룰러 네트워크 사용 상태");
} else if (path.usesInterfaceType(NWInterfaceTypeWiredEthernet)) {
NSLog(@"네트워크 상태 확인 :: Connected Ethernet :: 이더넷 사용 상태");
} else {
NSLog(@"네트워크 상태 확인 :: Connected other interface :: Else");
}
} else {
NSLog(@">>>>>>>>>>>>>>>> 네트워크 상태 확인 :: Network is unavailable :: 네트워크 사용 불가능 상태 >>>>>>>>>>>>>>>>");
}
}];
[self.pathMonitor startWithQueue:self.monitorQueue];
}
// [네트워크 모니터링 stop 메소드]
- (void)stopMonitoring {
NSLog(@"stopMonitoring :: 네트워크 모니터링 종료 수행");
[self.pathMonitor cancel];
}
@end
// --------------------------------------------------------------------------------------
반응형
'Objective-C' 카테고리의 다른 글
Comments