Tôi đang cố gắng hết sức để có được trạng thái kết nối internet đích thực. Tôi đã sử dụng Khả năng hiển thị của Apple nhưng nó chỉ cho tôi trạng thái kết nối wifi tức là không bao gồm trường hợp thiết bị được kết nối qua wifi (tới bộ định tuyến hoặc điểm phát sóng), nhưng bộ định tuyến wifi hoặc điểm phát sóng không được kết nối với internet. Kịch bản này có thể tái sản xuất bằng cách kéo cáp đầu vào internet từ bộ định tuyến wifi. Trình thông báo khả năng hiển thị trả về ReachableViaWiFi
cho cả hai reachabilityForInternetConnection
và ReachabilityWithHostName
. Tôi khá nhiều trong một sửa chữa với vấn đề này. Tôi đã thử nó thông qua các NSURLConnection
quá nhưng đó là tiêu hao pin quá nhiều và cá nhân tôi không thích giải pháp đó để tiếp tục yêu cầu URL, mặc dù trong một chủ đề nền.Làm thế nào để phát hiện mất khả năng truy cập internet khi nguồn wifi mất kết nối?
Dưới đây là đoạn code mà tôi đang sử dụng (lịch sự của một SO đồng, không nhớ đường dẫn chính xác mặc dù)
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkNetworkStatus:) name:kReachabilityChangedNotification object:nil];
internetReachable = [[Reachability reachabilityForInternetConnection] retain];
[internetReachable startNotifier];
// check if a pathway to a random host exists
hostReachable = [[Reachability reachabilityWithHostName: @"www.google.com"] retain];
[hostReachable startNotifier];
sau đó trong phương pháp quan sát:
- (void) checkNetworkStatus:(NSNotification *)notice{
// called after network status changes
NetworkStatus internetStatus = [internetReachable currentReachabilityStatus];
switch (internetStatus)
{
case NotReachable:
{
NSLog(@"The internet is down.");
self.isInternetReachable = NO;
break;
}
case ReachableViaWiFi:
{
NSLog(@"The internet is working via WIFI.");
self.isInternetReachable = YES;
break;
}
case ReachableViaWWAN:
{
NSLog(@"The internet is working via WWAN.");
self.isInternetReachable = YES;
break;
}
}
NetworkStatus hostStatus = [hostReachable currentReachabilityStatus];
switch (hostStatus)
{
case NotReachable:
{
NSLog(@"A gateway to the host server is down.");
self.isHostReachable = NO;
break;
}
case ReachableViaWiFi:
{
NSLog(@"A gateway to the host server is working via WIFI.");
self.isHostReachable = YES;
break;
}
case ReachableViaWWAN:
{
NSLog(@"A gateway to the host server is working via WWAN.");
self.isHostReachable = YES;
break;
}
}
}
Xin chào @Ahmed. Bạn đã bao giờ tìm thấy một giải pháp cho điều này? Tôi gặp vấn đề tương tự - người dùng của tôi có thiết bị của họ được kết nối với điểm phát sóng Wifi và khi điểm phát sóng mất kết nối mà ứng dụng không biết. –
2016 và vẫn chưa được giải quyết, gặp vấn đề tương tự. –