在我的应用程序中,如果用户没有互联网连接,我需要显示“没有互联网连接”消息。
要像这样使用可达性:
Reachability *netReach = [Reachability reachabilityWithHostName:@"host.name"];
是个坏主意,因为互联网可以使用但主机不可用,对吗?
那么如何在没有主机的情况下检查互联网连接?谢谢...
在我的应用程序中,如果用户没有互联网连接,我需要显示“没有互联网连接”消息。
要像这样使用可达性:
Reachability *netReach = [Reachability reachabilityWithHostName:@"host.name"];
是个坏主意,因为互联网可以使用但主机不可用,对吗?
那么如何在没有主机的情况下检查互联网连接?谢谢...
Reachability *internetReachable = [Reachability reachabilityForInternetConnection];
[internetReachable startNotifier];
if(internetReachable.isReachable)
NSLog(@"True");
你是绝对正确的。可达性只检查某个主机是否可达。问题是,如果不向主机发送请求,就无法(我能想到的)如何确定您是否连接到互联网。
那么你可以做什么(以及 Apple 在其可达性示例中所做的):选择一个主机,你可以 99.99% 确定主机可用。例如 google.com 或 apple.com
我认为苹果依赖某个主机来检查互联网连接的事实(以及他们没有想出其他东西,而不依赖于某个主机的事实)是一个很好的迹象,表明检查互联网连接以这种方式并不是一个坏主意。
编辑
当然,最好的方法(如对 Petesh 所指问题的回答中所述)是简单地提出您想要提出的请求,然后在发生错误时相应地处理错误。换句话说: 1. 提出您的请求 2. 如果请求失败,请使用 Reachability 查看丢失的 Internet 连接是否可能是问题所在