使用 Reachability 2.2 检查 Internet 连接

Posted

技术标签:

【中文标题】使用 Reachability 2.2 检查 Internet 连接【英文标题】:Checking Internet connection with Reachability 2.2 【发布时间】:2010-07-28 14:57:21 【问题描述】:

我们正在尝试在没有连接时显示警报视图,并且我们正在使用来自苹果的可达性 2.2 类。我们遇到的问题是,在程序开始时,我们总是收到一个警报视图,即没有互联网连接,但我们已连接到互联网。是否有正确的方法来检查这些类的 Internet 连接?

【问题讨论】:

你看过可达性示例代码吗? 【参考方案1】:

我记得读过 Apple 代码示例中的可达性代码对于进行网络检查不是很好。推荐的方法是检查设备是否可以看到您的网站(或网页),如果没有则给出错误。

我搜索了我在哪里读到这篇文章,但找不到原文。这是使用该方法的另一个链接:

http://www.iphonedevx.com/?p=657

【讨论】:

在那个例子中,他使用了可达性类。 问题出在 Apple 的 Reachability 类的旧版本中 - 最新版本 (v. 2.n.n) 已被大量重写。【参考方案2】:

可达性需要一些时间来完成它的任务。 所以要有耐心。 使用通知获取结果。

这就是我的工作:

BOOL hasInet; 可达性 *connectionMonitor = [可达性可达性ForInternetConnection]; [[NSNotificationCenter 默认中心] 添加观察者:自我 选择器:@selector(inetAvailabilityChanged:) 名称:kReachabilityChangedNotification 对象:连接监视器]; hasInet = [connectionMonitor currentReachabilityStatus] != NotReachable;

然后

-(void)inetAvailabilityChanged:(NSNotification *)notice 可达性*r = (可达性*)[通知对象]; hasInet = [r currentReachabilityStatus] != NotReachable;

这对我很有效。

【讨论】:

以上是关于使用 Reachability 2.2 检查 Internet 连接的主要内容,如果未能解决你的问题,请参考以下文章

调用 Reachability startNotifier 后,Network 状态变为 0

NetworkReachabilityManager 或 Reachability 无法识别在没有互联网的情况下连接 wifi

ios上网络类型的可达性错误检查

Swift 3 通过可达性检查互联网连接

iPhone 可达性检查

CF999E Reachability from the Capital