我已经阅读
了这个问题,发现它的答案对于检查 iPhone 的互联网连接很有用。我在 viewDidLoad 消息中实现了检查。但是,我的应用程序确实从服务器的 XML 文件中加载数据(在 viewWillAppear 内)。在这种情况下,必须在应用程序尝试从 Internet 源加载数据之前完成检查。我的问题是网络检查需要几秒钟,但应用程序确实继续执行代码。
这导致延迟检查。所以有一个有效的互联网连接,但存储此信息的 bool 变量设置得太晚了。
viewDidLoad 中的代码
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkNetworkStatus:) name:kReachabilityChangedNotification object:nil];
internetReachable = [[Reachability reachabilityForInternetConnection] retain];
[internetReachable startNotifier];
所选消息的实现方式与上面链接中的示例相同。此外,它设置了一些布尔属性,因此我可以访问应用程序中的连接状态。
viewWillAppear 中的代码
if(internetActive == TRUE)
{
NSLog(@"connected");
//Code to load XML stuff
}
else
{
NSLog(@"not connected");
}
控制台显示“未连接”。但几秒钟后,“checkNetworkStatus”中的调试日志显示互联网连接可用,并且将设置布尔“internetActive”。
我认为网络检查提供他关于连接状态的报告对我的目的来说为时已晚。有没有办法延迟应用程序直到建立连接?或者这会导致应用程序崩溃,因为视图在几秒钟内没有显示?是否有任何其他可能性来确保连接?
我的第二个问题是如何确保特定的互联网地址可用?我上面提到的链接
hostReachable = [[Reachability reachabilityWithHostName: @"www.apple.com"] retain];
[hostReachable startNotifier];
检测与主机的连接,但我想详细介绍并尝试检测主机是否值得特定地址。但是输入完整地址路径(例如“localaddress.mylan.de/lan/xml/”)而不是主机会导致主机处于不可访问的连接状态。在浏览器地址栏中输入提到的地址会显示正确的结果。我想我必须检查它,但如何?
谢谢阅读 :)