在iOS/Objective-C中检查网络连接的最快方法 - 2017

24 浏览
0 Comments

在iOS/Objective-C中检查网络连接的最快方法 - 2017

这个问题已经有答案了:

如何在iOS或macOS上检查活动的互联网连接?

我的检查互联网连接的代码,昨天在飞机上发现非常缓慢。我正在使用许多旧的SO答案中的技术,检查一个NSUURL,然而,当在没有连接的飞机上时,它实际上需要15秒甚至更长时间才能返回FALSE,使应用程序基本上无法使用。

是否有一个可靠的异步方法可以做到这一点?人们推荐Tony Million的reachability类在旧的答案中,但它似乎非常复杂,苹果显然在使用它的一些应用程序。

如果有人能建议2017年检查互联网连接的最快,可靠的方式,将不胜感激。谢谢。

- (BOOL)connected
    {
        NSURL *scriptUrl = [NSURL URLWithString:@"https://www.google.com"];
        NSData *data = [NSData dataWithContentsOfURL:scriptUrl];
        if (data) {
            NSLog(@"Device is connected to the internet");
            return TRUE;
        }
        else {
            NSLog(@"Device is not connected to the internet");
            return FALSE;
        }
    }

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

即使在2017年,Reachability 也是正确的方式。

所有各种Reachability类都基于Apple的示例代码。

虽然它使用了C API,但使用方法很简单:

- (BOOL)connected
{
    Reachability *reach = [Reachability reachabilityForInternetConnection];
    if ([reach isReachable]) {
        NSLog(@"Device is connected to the internet");
        return TRUE;
    }
    else {
        NSLog(@"Device is not connected to the internet");
        return FALSE;
    }
}

如果您将使用苹果的Reachability类而不是Tony Million的类,请将[reach isReachable]替换为[reach currentReachabilityStatus] != NotReachable

不要担心苹果可能会拒绝使用它的应用程序。如果发生这种情况,请将类从Reachability重命名为MyReachability。

0