2013-01-07 37 views
3

我需要我的應用程序不斷地監聽reachability修改和更新我的意見根據network status,我想使用notificationcenter,讓我所有的意見聽變化,但我不知道如何實現這個。可達性和通知中心

我知道如何使用notificationcenterReachability但我似乎無法找到實施Reachability check的地方。

我應該在哪裏檢查網絡變化,並通知其他ViewControllers

我不認爲AppDelegate是正確的地方,如果我把Reachability檢查在視圖控制器只被只要ViewController是「活動」進行網絡檢查。

回答

1

創建一個「單身」 Reachability,並在應用程序啓動初始化。

讓單身人士定期檢查可達性,例如,與NSTimer。然後它可以通知其他在NSNotificationCenter註冊的活動視圖。右:

// AppDelegate.m: 

@property (nonatomic, strong) Reachability *reachability; 

// in applicationDidFinishLaunching... 
self.reachability = [[Reachability alloc] init]; 

// Reachability.m 

-(id)init { 
    self = [super init]; 
    if (self) { 
    [self setupTheTimer]; 
    } 
    return self; 
} 
0

我會創建一個處理所有網絡檢查的單例NSObject類。

將其命名爲NetworkChecker。

回調創建一個代表,像NetworkCheckerDelegate與像的方法:

@protocol NetworkCheckerDelegate <NSObject> 

-(void)networkStatusUpdated:(NSInteger)networkStatus; 

@end 

@interface NetworkChecker : NSObject 
{ 
    id<NetworkCheckerDelegate> networkDelegate; 
} 

添加一個方法來啓動網絡檢查和委託添加到它像:

+(void)updateNetworkWithDelegate:(id<NetworkCheckerDelegate>)delegate 
{ 
    networkDelegate = delegate; 

    //Set timer to do Reachability checks 
} 

-(void)timerIsCompleted 
{ 
    //Do Reachability check 

    if(newNetworkState != oldNetworkState){ 
     [networkDelegate networkStatusUpdated:newNetworkState]; 
    } 
} 

然後在每個ViewController你需要它你可以做(​​做這個viewDidLoad):

[NetworkChecker updateNetworkWithDelegate:self]; 

並實現以下網絡狀態變化後,必須做一些事情:

-(void)networkStatusUpdated:(NSInteger)networkStatus 
+0

好,但後來當我打電話[自NetworkChecker updateNetworkWithDelegate]我只檢查? 我需要不斷的網絡檢查和通知 – user1359448

+0

沒有,這只是爲當前視圖啓用網絡檢查器。您可以隨時從NetworkChecker中調用networkStatusUpdated:以使用新的網絡狀態更新當前視圖 –

+0

請您詳細說明一下,也許還需要更多代碼? 我不太明白。 :) – user1359448