如何在iOS应用程序中实现Reachability(无互联网弹出窗口)的最简单方法?

33 浏览
0 Comments

如何在iOS应用程序中实现Reachability(无互联网弹出窗口)的最简单方法?

该问题已经有答案:

可能的重复问题:

如何在iPhone SDK上检测到活动的互联网连接?

如何在iOS应用程序中最简单地实现Reachability (代码通知用户没有互联网连接)?

admin 更改状态以发布 2023年5月21日
0
0 Comments

我在我的appDelegate中这样做的

在appDelegate.h中:

@interface myAppDelegate : NSObject  {
IBOutlet noInternetViewController *NoInternetViewController;
BOOL isShowingNoInternetScreen;
}

在appDelegate.m中:

//at top
#import "Reachability.h"
//somewhere under @implementation
-(void)checkInternetConnection {
Reachability *r = [Reachability reachabilityWithHostName:@"www.google.com"];
NetworkStatus internetStatus = [r currentReachabilityStatus];
if ((internetStatus != ReachableViaWiFi) && (internetStatus != ReachableViaWWAN)) {
    if (!isShowingNoInternetConnectionScreen) {
        [self.navigationController pushViewController:NoInternetViewController animated:YES];
        isShowingNoInternetConnectionScreen = YES;
    }
}
else if (isShowingNoInternetConnectionScreen) {
    [self.navigationController popViewControllerAnimated:YES];
    isShowingNoInternetConnectionScreen = NO;
    }
}
//inside application:didFinishLaunchingWithOptions: or in application:didFinishLaunching
isShowingNoInternetConnectionScreen = NO;
[NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(checkInternetConnection) userInfo:nil repeats:YES];

我正在使用导航控制器,但如果您没有,那么只需将pushViewController:animated:更改为presentModalViewController:animated:,并将popViewControllerAnimated:更改为dismissModalViewController

显然,您需要在Interface Builder中设置一个视图控制器,并将其绑定到IBOutlet。 只需将此设置为用户在无连接时要查看的任何内容即可。

0