iOS Reachability 无法捕获连接到 WiFi 但未登录的情况

标签 ios reachability

今天,我公开了我的 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/

相关文章:

ios - kontakt.io信标出现问题

ios - 如何在 iOS 中按预定时间发送短信/电子邮件

iphone - 在后台运行时接收可达性通知?

ios - 如何在 Swift 中使用 SCNetworkReachability

ios - iOS 应用程序中的应用程序屏幕序列

ios - 如何让 EventKitUI 使用设备语言?

ios - 使用 NSURLConnection 异步下载 UITableView 的图像

ios - 当可达性连接丢失时显示警报 View

ios - 可达性有多可靠,我应该采取进一步的预防措施吗?

iOS 应用程序 : Checking for internet connection only works for WLAN, 不适用于移动数据