투케이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


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

 

반응형
Comments