在我的启动画面中,我订阅了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];
}
}
问题是只能在启动画面上检查互联网连接,所以如果我在其他屏幕的中间并且我放松了互联网连接,那么就没有办法告诉连接已经消失。如何制作一个好的逻辑来检查客户端的互联网连接。
答案 0 :(得分:1)
您希望使用可访问性库,该库允许您获得有关更改的回调(like this one)。
然后,在需要它的每个控制器中,创建一个可访问性实例并设置reachableBlock
和unreachableBlock
以执行所需的操作。
答案 1 :(得分:0)
我建议创建一个所有互联网请求过滤的类,并检查该类中的连接(使用可建议的可达性)。如果你以这种方式构建它,它应该简化一些事情。