2013-09-30 36 views
2

在寻找一个简单的异步方法来检查的iOS上网,我有一个想法,用一个UIWebView来处理异步:这种检查互联网连接的方法有什么问题?

-(void) testNet 
{ 
    UIWebView *webview = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)]; 
    webview.delegate=self; 
    NSString *urlAddress = @"http://bla.com/dummySmallFile.txt"; 
    NSURL *url = [NSURL URLWithString:urlAddress]; 
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 
    [webview loadRequest:requestObj]; 
} 
-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error 
{ 
    //deal with no net stuff here 
} 
-(void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    //net is there, use it here 
} 

这似乎是工作,但我想知道是否有在这种方法中我可能没有意识到任何隐藏的危险。有任何想法吗?

+0

您是否特意试图检查访问该网站或一般Internet访问? – jprofitt

+0

只需检查现有的Internet连接。该网站可能是谷歌或任何可靠的,但我目前使用我自己的一个小文件,以尽量减少负载。 –

+3

为什么不使用大多数人使用的“可达性”? – rmaddy

回答

2

有两个缺点这种方法,但没有太多的工作要做:

  1. 数据使用方法:使用蜂窝数据的设备,您正在使用的数据。如果文件足够小,它应该是不可知的,但它仍然存在。
  2. 如果您正在检查一般的互联网访问,而不仅仅是针对该网站,如果该网站停用,您的应用程序会认为互联网停机。这可以通过在高可用性云服务器上运行检查服务或通过使用非常高可用性的网站来缓解。
+0

@Yazanalhoroub:#1比#2重要得多。 #2是一个真正的问题。 – Linuxios

+0

当然。我想要“如果我第一次测试,那么如果失败,我会尝试谷歌,以确保......”,但这种方法有其用于我最初的测试目的,它的时间到了:)非常感谢。 –

+0

@Yazanalhoroub:当然。 – Linuxios