iOS 앱에서 네트워크 상태 얻기

소개



네트워크의 접속 상황을 확인하는 라이브러리 「Reachability」를 사용해 보았으므로 비망록으로서 기입합니다.
현재의 네트워크의 접속 상황이 3G, WiFi, 혹은 권외인지를 확인할 때에 편리한 것이 「Reachability」라고 하는 라이브러리입니다.

Reachability 도입



CocoaPods를 도입하고 있는 경우는 이하의 순서를 실시한다.
※CocoaPods의 도입 순서에 대해서는 이쪽의 기사에 매우 정중하게 쓰여져 있습니다.
ぃ tp // 코 m / 시노 키요 세이 / ms / 3090290cb72434852460
cd プロジェクトディレクトリ //プロジェクトディレクトリに移動
pod init //Podfileを作成
vim podfile //Podfileを開く

Podfile의 내용을 아래와 같이 편집.
target 'ReachabilityDemo(앱 이름)' do의 한 줄 아래에
pod 'Reachability'라고 추가하고 저장합니다.
# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'

target 'ReachabilityDemo' do
  pod 'Reachability'
  # Uncomment this line if you're using Swift or would like to use dynamic frameworks
  # use_frameworks!

  # Pods for ReachabilityDemo

end
pod install //Reachabilityのインストール

※Xcode를 만약 열려 있는 상태라면 한번 재기동 후 프로젝트를 다시 열어 주세요.

CocoaPods를 사용하지 않는 방법
아래 페이지에서 샘플 코드를 다운로드하고 프로젝트에 Reachability.h/m을 추가하십시오.

SystemConfiguration.framework 추가



1, 프로젝트 이름 누르기
2,Linked Frameworks and Libraries의 +를 눌러
3, systemc 및 검색 바에 입력
4, SystemConfiguration.framework를 선택하고 추가 버튼을 누르십시오.



구현



ViewController.m
#import "ViewController.h"
#import "Reachability.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidAppear:(BOOL)animated {
    Reachability *reachability = [Reachability reachabilityForInternetConnection];
    NetworkStatus netStatus = [reachability currentReachabilityStatus];

    switch (netStatus) {
        case NotReachable:  //圏外
            NSLog(@"圏外");
            break;
        case ReachableViaWWAN:  //3G
            NSLog(@"3G");
            break;
        case ReachableViaWiFi:  //WiFi
            NSLog(@"WiFi");
            break;
        default:  //上記以外
            NSLog(@"上記以外");
            break;
    }

    // 用途としては下記のようにif文でネットワークステータスを判定して使うことが多そう
    if (netStatus == NotReachable) {
        // ここでUIAlertControllerで「ネットワークに接続していません」等のアラートを出すなど
    } else {
        NSLog(@"正常");
        // ここに正常系の処理を書く
    }
}

@end


※코멘트로 교시해 주신 네트워크 스테이터스 변경을 통지하는 방법도 추기하겠습니다.

ViewController.m
#import "ViewController.h"
#import "Reachability.h"

@interface ViewController ()
@property (weak, nonatomic) Reachability *reachability;
@end

@implementation ViewController

- (void)viewDidAppear:(BOOL)animated {
    self.reachability = [Reachability reachabilityForInternetConnection];
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(notifiedNetworkStatus:)
                                                 name:kReachabilityChangedNotification
                                               object:nil];
    [self.reachability startNotifier];
}

- (void)notifiedNetworkStatus:(NSNotification *)notification {
    NetworkStatus networkStatus = [self.reachability currentReachabilityStatus];
    switch (networkStatus) {
        case NotReachable:  //圏外
            NSLog(@"圏外");
            break;
        case ReachableViaWWAN:  //3G
            NSLog(@"3G");
            break;
        case ReachableViaWiFi:  //WiFi
            NSLog(@"WiFi");
            break;
        default:  //上記以外
            NSLog(@"上記以外");
            break;
    }
}


@end


사이고에게



편리!

좋은 웹페이지 즐겨찾기