【问题标题】:Reachability service malfunctioning in Xcode runXcode 运行中的可达性服务出现故障
【发布时间】:2013-08-12 12:26:53
【问题描述】:

我正在开发一个需要 Internet 连接的 iPhone 应用程序,因此我在我的项目中使用了 Apple 示例代码提供的 Reachability 类文件。 我在视图控制器中导入“Reachability.m”并使用以下代码检查互联网连接

Reachability *reachability = [Reachability reachabilityForInternetConnection];
NetworkStatus internetStatus = [reachability currentReachabilityStatus];

要检查连接,

    if (internetStatus != NotReachable)
{
     My code to run.
}

嗯,直到昨晚,这一切都很好。但是现在互联网状态没有检测到没有互联网连接。我的 Wifi 已关闭,我使用这些 if 语句检查了状态

if(internetStatus==ReachableViaWiFi){
    NSLog(@"Reachable VIA WIFI");
}
if(internetStatus==ReachableViaWWAN) {
    NSLog(@"Reachable VIA WLAN");
}
if(internetStatus==NotReachable){
    NSLog(@"Not Reachable");
}

但它显示可通过 WIFI 访问。我的wifi已关闭,我找不到问题所在。与上次工作时相比,我什至没有更改任何代码行。

我正在 Xcode 模拟器上对其进行测试。

【问题讨论】:

标签: iphone xcode reachability


【解决方案1】:

当您禁用 WiFi 时,您的设备会尝试从您的运营商访问互联网。这就是状态 ReachableViaWWAN 的原因。当您从设备设置中禁用 3G 时,只有您的设备会显示您未连接,然后 -

 if(internetStatus==NotReachable)
 {
       NSLog(@"Not Reachable");
 }

这个条件会成立。

【讨论】:

  • 我的错,我在问题中进行了编辑,输出是通过 WIFI 而不是 WLAN 可访问的。我的 Wifi 仍然通过 Wifi 或以太网连接到互联网,而测试我的笔记本电脑没有任何其他连接方式上网
  • 你没有在设备上测试?
【解决方案2】:

试试这个:

if([self connected] ) 
  {
    NSLog(@"Internet connected\n");
  } 


- (BOOL)connected 
{
    Reachability *reachability = [Reachability reachabilityForInternetConnection];  
    NetworkStatus networkStatus = [reachability currentReachabilityStatus]; 
    return !(networkStatus == NotReachable);
}

您可以获取 rechability 类 here : Download sample 并将 Reachability.h 和 Reachability.m 添加到您的项目中。

【讨论】:

    【解决方案3】:

    我找到了问题的答案。 Reachability 完全没有问题,即使没有建立连接,我的 MAC 也显示 Ethernet Connected,所以它导致了所有问题。 考虑到硬件问题,下一个问题是堆栈溢出:P 谢谢大家的帮助:)

    【讨论】:

      猜你喜欢
      • 2015-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多