Objective c 检查iPhone中的互联网连接,而不仅仅是路由器

Objective c 检查iPhone中的互联网连接,而不仅仅是路由器,objective-c,connection,reachability,Objective C,Connection,Reachability,我使用普通的可达性工具来检查是否有可用的internet连接。它在大多数情况下都能工作,但如果我拔下连接wifi路由器的WAN电缆,出于某种原因,它仍然会说它可以通过wifi找到主机。如果我把网址改成不存在的东西,它会像应该的那样说“互联网坏了”。我的问题在哪里 例如: I.我拔掉了“网线”,但手机通过wifi连接到路由器。我第一次使用这行代码运行此域: hostReachable = [[Reachability reachabilityWithHostName: @"www.google.c

我使用普通的可达性工具来检查是否有可用的internet连接。它在大多数情况下都能工作,但如果我拔下连接wifi路由器的WAN电缆,出于某种原因,它仍然会说它可以通过wifi找到主机。如果我把网址改成不存在的东西,它会像应该的那样说“互联网坏了”。我的问题在哪里

例如:

I.我拔掉了“网线”,但手机通过wifi连接到路由器。我第一次使用这行代码运行此域:

hostReachable = [[Reachability reachabilityWithHostName: @"www.google.com"] retain];
结果=未找到主机(正确)

二,。我在手机中禁用wifi。结果=找到具有WWAN的主机(正确)


三、 我在手机中启用wifi。结果=找到具有WIFI的主机。(不正确,因为路由器不在线)

对于internet检查,我向一个站点(很可能是google.com)发送一个http请求。如果它不返回true,则表示没有internet。即使连接速度很慢,这种情况也能正常工作。这里是方法

- (BOOL) connectedToInternet
{
    NSString *URLString = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.google.com"]];
return ( URLString != NULL ) ? YES : NO;
}

你可能想看看这个。已知可达性代码仅用于测试与路由器的连接。现在应该有一个连接通知。

我遵循了这个示例。对我来说,这就足够了,但我在某个地方读到,如果应用程序在与服务器的连接消失时不发出警告,该应用程序将不会在应用程序商店中获得批准。是否存在“stringWithContentsOfURL被删除”警告问题?如果此解决方案在给出结果之前等待一分钟,我是否正确?在这种情况下,这是不合适的。你不应该使用不推荐的代码,因为苹果肯定会拒绝该应用程序。它不会等一分钟。为什么它被剥夺种族?它在我的应用程序上运行时没有警告。我在这个方向上使用了一些东西,但像这样:可能重复