检查Internet连接iOS应用程序

时间:2013-05-14 15:42:07

标签: ios

在我的启动画面中,我订阅了UIApplicationDidBecomeActiveNotification。

 - (void)viewDidLoad
{
    [super viewDidLoad];


    // register notifications

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkInternetConnection:) name:UIApplicationDidBecomeActiveNotification object:nil];

}

-(void) checkInternetConnection:(NSNotification *) notification
{
    internetStatus = [[Reachability reachabilityForInternetConnection] currentReachabilityStatus];

    if(internetStatus == NotReachable)
    {
        [AppHelper showAlert:@"ERROR" message:@"Error downloading data. Please check your network connection and try again." cancelButtonTitle:nil otherButtonTitles:@[@"OK"]];
        return;
    }

    [self viewDidAppear:YES];
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    if(!(internetStatus == NotReachable))
    {
        AppDelegate *applicationDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
        [applicationDelegate performSelector:@selector(showMainMenu) withObject:[NSNumber numberWithBool:YES] afterDelay:3.0];
    }
}

问题是只能在启动画面上检查互联网连接,所以如果我在其他屏幕的中间并且我放松了互联网连接,那么就没有办法告诉连接已经消失。如何制作一个好的逻辑来检查客户端的互联网连接。

2 个答案:

答案 0 :(得分:1)

您希望使用可访问性库,该库允许您获得有关更改的回调(like this one)。

然后,在需要它的每个控制器中,创建一个可访问性实例并设置reachableBlockunreachableBlock以执行所需的操作。

答案 1 :(得分:0)

我建议创建一个所有互联网请求过滤的类,并检查该类中的连接(使用可建议的可达性)。如果你以这种方式构建它,它应该简化一些事情。