아이폰 어플을 개발하다보면 현재 인터넷 접속이 가능한지 확인해야할 필요가 있다. 또 사용성 측면에 있어서도 네트워크가 연결되어 있는 상태인지 확인해서 인터넷 사용이 가능한지 메시지를 보여주는 일도 중요할 수 있다. 또 어떠한 경우에는 3G인지 WiFi인지 알 필요가 있을 수 있다.

 

이러한 일을 위해 직접 만드는 것도 좋지만, 빠르게 어플을 개발해야하는 입장에서는 그것마저 부담스럽니다. 

그러므로 검색이 필요하다. 

 

검색해보니깐 아주 유용한 소스를 발견했다. 바로 Reachability 이다. 

애플 예제소스로 공개된 것이다.

 

http://developer.apple.com/iphone/library/samplecode/Reachability/Introduction/Intro.html

 

위에서 제공하는 소스를 다운로드 받아 X-code에서 직접 실행해보자. 네트워크 상태를 껐다가 켰다가 하면서 실험해보자. 잘 동작한다. 아래는 본인이 직접 시뮬레이터 상에서 동작시켜본 것이다. 

 

 


사용법은 단순하다.

1. Reachability.h와 Reachability.m을 자신의 프로젝트의 클래스로 등록한다.

2. SystemConfiguration.framework 프레임워크를 추가시킨다. 

3. 사용한다. ^^

 

가령 현재 상태가 WiFi인지 WWAN(3G)인지 확인하려면 아래처럼 코딩을 하면 되겠다.


 


실시간으로 네트워크 상태변화를 감지하고 싶다면 Notification기능을 활용하면 된다. 이미 샘플코드에 다 정리가 되어 있지만 간단하게 설명하자면... 

 

먼저 아래와 같은 코드를 application:didFinishLaunchingWithOptions:와 같은 함수등에 넣는다. 여기서 _internetReach 변수는 Reachability *_internetReach;로 클래스 변수로 정의해둔다. 또한 dealloc시에는 [_internetReach release];_internetReach=nil;로 메모리 해제를 해주어야 한다.


 

그리고 다음과 같은 2개의 함수를 넣어서 간단하게 감지할 수 있도록 만들면 된다. 


 


이것으로 인터넷 연결상태를 실시간으로 감지할 수 있게 된다. 

 

개발자에 따라서 특정한 웹서버에 접속이 원할한지 확인할 필요가 있을지 모른다.

그러한 경우에는 샘플코드를 보면 아래와 같은 방법으로 사용했다. 

 

[[Reachability reachabilityWithHostName: @"www.apple.com"] retain];


이외에 샘플코드에 Local WiFi 감지를 하는 부분이 있는데, 사실 무슨의미인지는 잘 모를뿐더러 어디서 보니깐 실제 인터넷 접속감지는 위에서 소개한 2가지 방법만 사용해도 문제가 없는 것 같다.

 

동영상 강좌도 있다.

http://answers.oreilly.com/topic/1218-how-to-check-the-status-of-the-network-connection-from-your-iphone-app/

 

아주 간단하게 만들어진 소스도 있다.

http://theeye.pe.kr/entry/how-to-check-network-connection-on-iphone-sdk


 

신고
Posted by genius3k

티스토리 툴바