Występuje problem, w którym połączenie natywne w UIWebView
zaczyna się nie działać z przekroczeniem limitu czasu. Po rozpoczęciu limitu czasu tylko trudna aplikacja wyjdzie mu z pomocą.UIWebView loadRequest: ciągłe niepowodzenie z NSURLErrorTimedout w iOS 6
Limit czasu rozpoczyna się losowo, ale po uruchomieniu, tylko trudne wyjście go rozwiąże.
Ponieważ trudne wyjście jest rozwiązaniem, jest to problem klienta, a nie serwera. Ale z dostępną API UIWebView
nie mogę zrozumieć problemu.
Jest do tej pory widoczne tylko w iOS6 iPhone i iPad. Za każdym razem trafiam w ten sam adres URL i buforuję zasoby JS, CSS (może coś jest nie tak z pamięcią podręczną iOS6 webview).
//code
//usual webview loading code
//except I am setting cookies everytime before load request
- (void)viewDidLoad
{
[super viewDidLoad];
self.webview.delegate = self;
NSString * urlString;
urlString = @"https://www.myserver.com/";
NSURL * url = [NSURL URLWithString:urlString];
// I create and set some cookies here.
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookies:cookies forURL:self.mobilePageURL mainDocumentURL:self.mobilePageURL];
[self.webview loadRequest:[NSURLRequest requestWithURL:url]];
}
-(void)webViewDidStartLoad:(UIWebView *)webView
{
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
}
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
if([error.domain isEqualToString:NSURLErrorDomain] && error.code != NSURLErrorCancelled)
{
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
UIAlertView * alert = [[UIAlertView alloc] init];
NSString * errorMessage = [NSString stringWithFormat:@"%d",error.code];
[alert setMessage: errorMessage];
[alert addButtonWithTitle:@"Ok"];
[alert show];
}
}
wkleić kod ... – Deepesh