今天,我公开了我的 Beta 版应用程序。我在一家酒店,还没有获得 WiFi 的访问密码。在测试可达性时,我注意到它并没有像它应该的那样失败。它已连接到 WiFi,但实际上无法访问任何东西,因为我没有登录。此用例应该包含在 reachabilityWithHostname 中。这是我的代码:
在 AppDelegate.h 中:
@interface AppDelegate : UIResponder <UIApplicationDelegate> {
Reachability* hostReach;
Reachability* internetReach;
Reachability* wifiReach;
}
在 AppDelegate.m 中:
internetReach = [Reachability reachabilityForInternetConnection];
[internetReach startNotifier];
wifiReach = [Reachability reachabilityForLocalWiFi];
[wifiReach startNotifier];
hostReach = [Reachability reachabilityWithHostname: @"http://www.google.com"];
[hostReach connectionRequired];
[hostReach startNotifier];
在需要连接的模块中:
- (BOOL) isInternetReachable
{
Reachability *currentReach = [Reachability reachabilityForInternetConnection];
NetworkStatus netStatus = [currentReach currentReachabilityStatus];
return (netStatus == ReachableViaWiFi || netStatus == ReachableViaWWAN);
}
有谁知道如何解决这种情况?
最佳答案
...
[Reachability reachabilityWithHostname: @"http://www.google.com"]
...
您应该根据 Apple's documentation 使用主机名(不带 http://
) .
关于iOS Reachability 无法捕获连接到 WiFi 但未登录的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15306658/