2013-04-09 3 views
1

저는 ios 개발을 처음 사용합니다. 연결 변경 (또는 장치의 IP 주소 변경) 콜백 싶어요. 내 응용 프로그램에 Reachability (sample code of Apple)을 추가했습니다. 그러나 콜백을주지는 않습니다.android의 "ConnectivityManager.CONNECTIVITY_ACTION"과 같은 콜백이 필요합니다.

나는 안드로이드에서 똑같은 일을했습니다 - 네트워크 연결의 변화를 감지 한 "ConnectivityManager.CONNECTIVITY_ACTION"이 발생했습니다.

iOS에는 CONNECTIVITY_ACTION과 유사한 기능을 수행 할 수있는 API가 있습니까? 도움을 주시면 감사하겠습니다. 감사합니다 ...

답변

0

사용 SCNetworkReachabilitySetCallback :

Boolean SCNetworkReachabilitySetCallback (
    SCNetworkReachabilityRef target, 
    SCNetworkReachabilityCallBack callout, 
    SCNetworkReachabilityContext *context 
); 

그래서 콜백 방법은 먼저

static void MyReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void* info) 
{ 
// do somthing 
} 

을 콜백을 선언 한 후 등록 할 뜻이

typedef void (*SCNetworkReachabilityCallBack) (
    SCNetworkReachabilityRef target, 
    SCNetworkReachabilityFlags flags, 
    void *info 
); 

모양을 그것 :

SCNetworkReachabilityContext ctx = {0, self, NULL, NULL, NULL}; 
if(SCNetworkReachabilitySetCallback(reachabilityRef, MyReachabilityCallback, &ctx)) { 
// registered callback 
+0

이것은 이미 구현 한 도달 가능성 코드입니다. 그러나 "MyReachabilityCallback"은 연결을 변경할 때마다 호출되지 않습니다. –

+0

나는 Rechability 코드가 이미 내 응용 프로그램에 추가되었다고 말했습니다. 하지만 앱이 백그라운드로 들어가면 잠시 후 일시 중지 상태가됩니다. 매번 그런 것은 아니지만 무작위입니다. 앱이 일시 중지되면 콜백을받을 수 없지만 그 행동에 대한 이유는 추측됩니다. 어쨌든 도움을 많이 주셔서 감사합니다. –