首次打开应用时,我会使用此代码检查互联网:
//No Internet Connection error code
-(void)webView:(UIWebView *)webVIEW didFailLoadWithError:(NSError *)error {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No Internet Connection!" message:@"In order to use this app you need an active Internet connection!" delegate:self cancelButtonTitle:@"Close" otherButtonTitles:nil, nil];
[alert show];
}
//Close app from Alert View
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
exit(0);
}
我有一个UIWebView应用程序,它有一个jQuery .click()函数。有没有办法在用户点击该按钮后再次检查Internet?
答案 0 :(得分:1)
看看Apple的示例代码。 Reachability项目显示了如何检测连接
http://developer.apple.com/iphone/library/samplecode/Reachability/index.html
答案 1 :(得分:1)
请注意,点击不一定会通过网络连接请求更多资源。
UIWebViewDelegate
有一个webView:shouldStartLoadWithRequest:navigationType
选择器,将成为您的朋友。要随时触发(在单击或其他操作上),请将隐藏iframe的源设置为某个虚拟值,并在委托方法中检查该值(将运行测试并返回NO
。< / p>
我建议不要在没有连接的情况下退出,因为用户可能会将其视为崩溃,特别是如果他们的连接丢失只是暂时的(通过隧道)。此外,反复测试连接可能会不必要地降低您的应用程序速度,并为用户带来更多数据费用。
答案 2 :(得分:1)
在函数click()中你应该添加这段代码:
window.location = "fake://myApp/checkForInternet";
你的Objective-C代码中的添加了这个:
-(BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *link = request.URL.absoluteString;
if ([link isEqualToString:@"fake://myApp/checkForInternet"])
{
// check for Reachability here
return NO;
}
return YES;
}
请注意,在此示例中,-webView:shouldStartLoad ...仅在webView中的每个事件中调用一次。如果你想在一个事件中的一个javascript函数中检查两次或更多次,我可以提供更复杂的代码
阅读有关检查可达性的信息,正如@ Rajneesh071所说,在Apple文档中或here是GitHub上的项目
答案 3 :(得分:1)
如果您正在使用Apple的可达性代码或类似代码,那么您需要currentReachabilityStatus
方法;否则调用基础SCNetworkReachabilityGetFlags函数