这里有大量关于在应用程序中找到活动的互联网连接的问题,但如果您在3g连接并且没有数据信用,或者如果您是在酒店的WiFi网络上自动重定向到登录页面,但您尚未输入密码。那种情况。检查iOS设备的互联网连接是否正常工作
什么是检查互联网连接是否实际运行的最快方法?
这里有大量关于在应用程序中找到活动的互联网连接的问题,但如果您在3g连接并且没有数据信用,或者如果您是在酒店的WiFi网络上自动重定向到登录页面,但您尚未输入密码。那种情况。检查iOS设备的互联网连接是否正常工作
什么是检查互联网连接是否实际运行的最快方法?
完成此操作的最佳方式是不使用Reachability
或任何其他API,方法是创建一个NSURL
并尝试从中接收数据。对于不好的连接,我添加了一个超时 20秒。
像:
- (void)checkConnection //Run this on a side queue, never on a main queue
{ NSURL *checkURL = [NSURL URLWithString:@"http://www.apple.com"];
NSURLRequest *lRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:checkURL]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:20.0];
NSData *data = [NSData dataWithContentsOfURL:lRequest];
if (data)
{
connected = YES;
}
else
{
connected = NO;
}
}
这将检查是否有特定的网站访问,并设置超时,这表明网络连接速度慢。
此代码可能有错误,因为我还没有使用/尝试过它!如果有任何评论,请回答此问题。
为什么可达性不是最好的方式?你应该用一些深刻的证据支持这个评论。 'apple.com'不再有有效的服务器/主机时会发生什么。有两个星期等待更新被批准 – soulshined
@soulshined我并不是说这是最好的方法。如果你不使用任何API,这可能是最好的方法。此外,Apple.com的正常运行时间高达97%。我建议使用Google.com,因为它们几乎可以随时获得99.9%的正常运行时间。 – MasterRazer
问题是,当可达性触手可及时,您不应该像这样硬编码地址。即使您不使用Apple.com,地址也会发生变化,服务器故障等等,也许说'最简单的方法'更准确,但这个解决方案并不是最好的。可达性还包含在网络更改时更新委托的通知,而不是手动查看网络是否更改 – soulshined
可以在AFNetworking使用AFNetworkReachabilityManager类。
https://github.com/AFNetworking/AFNetworking
上面的链接会帮助你在设置的东西。这将根据您的要求为您提供连续的网络检查。这里有几行代码:
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
NSLog(@"Reachability: %@", AFStringFromNetworkReachabilityStatus(status));
}];
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
@danpeters嗨,你可以实现它使用可达性类到iOS。 –
Apple Reachability代码仅检查是否存在WiFi/3G连接或根本没有连接,而不是上述情况。 –
@Danpeters也可以使用Reachability类。也可以使用SCNetworkReachability类。 –