gpt4 book ai didi

ios - 在 iOS 上检测互联网连接的最简单方法?

转载 作者:IT王子 更新时间:2023-10-29 07:26:57 27 4
gpt4 key购买 nike

我知道这个问题似乎会被许多其他问题所欺骗,但是,我觉得这里没有很好地解释简单的情况。来自 Android 和 BlackBerry 背景,如果没有可用连接,通过 HTTPUrlConnection 发出请求会立即失败。这似乎是完全正常的行为,我惊讶地发现 iOS 中的 NSURLConnection 没有模拟它。

我知道 Apple(以及扩展它的其他人)提供了一个 Reachability 类来帮助确定网络状态。我很高兴第一次看到这个并且完全期望看到像 bool isNetworkAvailable() 这样的东西,但令我惊讶的是我发现一个复杂的系统需要通知注册和回调,以及一堆看似不必要的细节。一定有更好的方法。

我的应用已经可以妥善处理连接故障,包括无连接。用户会收到失败通知,应用会继续。

因此我的要求很简单:我可以在所有 HTTP 请求之前调用单个同步函数来确定我是否应该费心实际发送请求。理想情况下,它不需要设置,只返回一个 bool 值。

这在 iOS 上真的不可能吗?

最佳答案

我做了更多的研究,我正在用更新的解决方案更新我的答案。我不确定您是否已经看过它,但是 Apple 提供了一个很好的示例代码。

下载示例代码 here

在您的项目中包含 Reachability.h 和 Reachability.m 文件。查看 ReachabilityAppDelegate.m 以查看有关如何确定主机可达性、WiFi 可达性、WWAN 等可达性的示例。要非常简单地检查网络可达性,您可以这样做

Reachability *networkReachability = [Reachability reachabilityForInternetConnection];   
NetworkStatus networkStatus = [networkReachability currentReachabilityStatus];
if (networkStatus == NotReachable) {
NSLog(@"There IS NO internet connection");
} else {
NSLog(@"There IS internet connection");
}

@BenjaminPiette's:不要忘记将 SystemConfiguration.framework 添加到您的项目中。

关于ios - 在 iOS 上检测互联网连接的最简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8812459/

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