gpt4 book ai didi

objective-c - 可达性 - 主机出现故障,而互联网正在重新连接

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:13:52 27 4
gpt4 key购买 nike

我用了this检查互联网连接 (WiFi\3G) 是否有效的问题。

它工作得很好,但有一个小问题。

当我关闭互联网时,该应用程序会发出互联网已关闭的警报;但是当我再次打开它时,直到连接确实建立起来,它说主机已关闭,而实际上是在运行,实际上,过了一会儿,它记录了运行。

我想知道我该怎么做才能让该消息仅在服务器实际关闭时显示,而不是在重新连接到 Internet 时显示!

这是我的代码

-(void) checkNetworkStatus:(NSNotification *)notice
{
NetworkStatus internetStatus = [internetReachable currentReachabilityStatus];
NetworkStatus hostStatus = [hostReachable currentReachabilityStatus];
if (internetStatus == NotReachable){
UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Reloading Failed" message: @Seems like you're offline! \n Some features, such as updating contents and downloading screenshots won't be available while you're offline.\nNavigate to Settings > Wi-Fi to connect to the Internet and enjoy those features!") delegate:nil cancelButtonTitle:nil otherButtonTitles:@"Ok", nil];
[alert show];
[alert release];
NSLog(@"offline");
}
else if (internetStatus == ReachableViaWiFi || internetStatus == ReachableViaWWAN){
NSLog(@"online");
if (hostStatus == NotReachable)
{ NSLog(@"Server offline");
UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Reloading Failed" message:@"Seems like there's a communication problem with the remote network. \n Please try again in a while!" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"Ok", nil];
[alert show];
[alert release];
}
else if (hostStatus == ReachableViaWWAN || hostStatus == ReachableViaWiFi){
NSLog(@"server online");
//download data from remote server
}
}
}


- (void)viewDidLoad {
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkNetworkStatus:) name:kReachabilityChangedNotification object:nil];
internetReachable = [[Reachability reachabilityForInternetConnection] retain];
[internetReachable startNotifier];
hostReachable = [[Reachability reachabilityWithHostName: @"www.mywebsite.com"] retain];
[hostReachable startNotifier];

有什么想法吗?

最佳答案

Reachability 仅用于检查 network is reachable 是否可用并且不会告诉您服务器是否已关闭。您需要结合使用 ReachabilityNSURLConnection 或其他第 3 方库来检查 HTTP 状态 200 和其他有效状态。您将使用 Reachability 来显示设备未连接的消息,一旦连接成功,您将使用 Web 请求通知用户服务器是否在线。在为您的设备重新打开互联网后,您对连接延迟无能为力,因为打开 radio 和连接到蜂窝网络或 wifi 需要时间。

关于objective-c - 可达性 - 主机出现故障,而互联网正在重新连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12203924/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com