ios | ios도 모르고 하이브리드 앱 개발하기 [ 10 인터넷 체크 / 네트워크 체크 ]

2016. 9. 19. 13:56mobile/ios



ios도 모르고 하이브리드 앱 개발하기 [ 10 인터넷 체크 / 네트워크 체크 ]




하이브리드 앱의 기본은 디바이스가 인터넷이 되는지 체크하는 것 부터 시작된다고 생각한다.


인터넷이 되지 않는 상태에서는 하이브리드 앱의 브라우저 (web view)에서 오류가 나고 이 오류에 대한 처리가 필요하다.




지금부터 인터넷 또는 네트워크를 체크하는 방법에서부터


web view 가 실행되기 전에 인터넷 또는 브라우저를 체크하고 이를 알림창을 통해 알려주는 방법에 대한 기록이다.





가장 먼저 다음 사이트를 방문한다.

정식 API 는 따로 없지만 애플에서 공식적인 클래스를 제공해주니 이를 사용하면 된다.


Guides and Sample Code 로 이동


아래처럼 Download Sample Code 클릭





다운로드 폴더에 Reachability 폴더가 있다.

Reachability > Reachability 아래에 보면 Reachability.h Reachability.m 파일이 있다.





이 두 파일을 선택 후 Xcode의 프로젝트 아래로 드래그 앤 드롭한다.





복사 설정을 한 후 Finish





애플에서 제공해주는 클래스 설정은 끝이다.




다음으로는 인터넷 또는 네트워크를 체크하는 함수를 만들어 보자.


ViewController.h  설정

함수를 선언한다.

6번 라인만 작성한다.

1
2
3
4
5
6
7
8
#import <UIKit/UIKit.h>
 
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIWebView *webView;
- (void) printAlert:(NSString*)title msg:(NSString*)msg;
- (BOOL) isConnectedNetwork;
@end
 
cs


ViewController.m 파일 설정

아까 다운받은 클래스를 import 시킨다.

1
#import "Reachability.h"
cs


다음으로는 변수 설정

@interface ~ @end 다음에 작성한다.

1
2
BOOL connectedFlag = true;
NSString* statusString= @"";
cs



함수 작성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// 네트워크 상태 체크
- (BOOL) isConnectedNetwork {
    // 네트워크의 상태 가져오기
    NetworkStatus netStatus = [[Reachability reachabilityForInternetConnection] currentReachabilityStatus];
    
    // 상태에 맞는 메세지
    switch (netStatus)
    {
        case NotReachable:
        {
            statusString = @"네트워크 연결이 되어있지 않습니다.";
            connectedFlag = false;
            break;
        }
        case ReachableViaWWAN:
        {
            statusString = @"GRPS/3G 로 연결되었습니다.";
            connectedFlag = true;
            break;
        }
        case ReachableViaWiFi:
        {
            statusString= @"WiFi로 연결되었습니다.";
            connectedFlag = true;
            break;
        }
    }
    
    //    NSLog(@"인터넷 : %@",statusString);
    
    return connectedFlag;
}
cs


함수 실행

viewDidAppear 함수 부분을 수정한다.

alert 을 사용하기 위해서 시작 메소드 중 viewDidAppear 메소드를 사용하였다.

alert를 사용하지 않는다면 viewDidLoad 메소드에서 실행해도 무방하다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
- (void)viewDidAppear:(BOOL)animated
{
    // 인터넷 체크
    if([self isConnectedNetwork]){
        NSString *url = @"http://localhost:8080/IOSweb/index.jsp";
        NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];
        [_webView loadRequest:request];
    }else{
        [self printAlert:@"Network Message" msg:statusString];
    }
    
    
    [self printAlert : @"app start" msg:@"시작되었습니다." ];
}
cs


printAlert 부분이 에러가 난다면 다음 포스팅을 참고한다.

ios 모르고 하이브리드 개발하기 [ 9 UIAlertController 사용하기 / alert 띄우기 / dialog ]




그리고 맥북 우측 상단에 보면 인터넷 설정이 있다.

나는 wi-fi를 사용중이므로 해당 wi-fi 끄기를 클릭.





네트워크를 끄고 앱을 실행해보면 다음과 같이 알림창이 뜨고 더이상 진행되지 않는다.












 * 경고


IOS에 무지한 상태에서 구글링만으로 앱 개발 및 포스팅이 진행됨


누구나 따라할 수 있겠지만 결코 완벽한 정답이 아닐 수 있음


아주 주관적인 입장에서의 포스팅임