2013-04-09 35 views
1

相同的回調我是新來的ios開發。我想要在連接更改(或設備的IP地址更改)時回撥。我在我的應用程序中添加了Reachability (sample code of Apple)。但它不給回調。需要在ios中作爲「ConnectivityManager.CONNECTIVITY_ACTION」在android

我在Android中做了同樣的事情 - 接收到「ConnectivityManager.CONNECTIVITY_ACTION」,它檢測到網絡連接發生了變化。

iOS中是否有可用的API,可以執行與CONNECTIVITY_ACTION類似的功能? 任何幫助表示讚賞。 謝謝...

回答

0

使用SCNetworkReachabilitySetCallback

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

所以你的回調方法看起來像這樣

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

這意味着你首先聲明回調

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

,然後註冊它:

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

這是可達性代碼,我已經實現了。但是,當我更改連接時,不會每次調用「MyReachabilityCallback」。 – 2013-04-10 04:15:49

+0

正如我所說Rechability代碼已經添加到我的應用程序。但我注意到,當應用程序進入後臺並在一段時間後進入暫停狀態。並非每次都是隨機的。當應用程序被暫停時,回調沒有收到,但我想這是其行爲的原因。無論如何非常感謝您的幫助。 – 2013-05-29 12:28:37