2016. 9. 19. 13:56ㆍmobile/ios
ios도 모르고 하이브리드 앱 개발하기 [ 10 인터넷 체크 / 네트워크 체크 ]
하이브리드 앱의 기본은 디바이스가 인터넷이 되는지 체크하는 것 부터 시작된다고 생각한다.
인터넷이 되지 않는 상태에서는 하이브리드 앱의 브라우저 (web view)에서 오류가 나고 이 오류에 대한 처리가 필요하다.
지금부터 인터넷 또는 네트워크를 체크하는 방법에서부터
web view 가 실행되기 전에 인터넷 또는 브라우저를 체크하고 이를 알림창을 통해 알려주는 방법에 대한 기록이다.
가장 먼저 다음 사이트를 방문한다.
정식 API 는 따로 없지만 애플에서 공식적인 클래스를 제공해주니 이를 사용하면 된다.
아래처럼 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에 무지한 상태에서 구글링만으로 앱 개발 및 포스팅이 진행됨 누구나 따라할 수 있겠지만 결코 완벽한 정답이 아닐 수 있음 아주 주관적인 입장에서의 포스팅임 |