Недавно я обнаружил, что мой UIWebView захлебывается ссылками ITMS. В частности, из UIWebView в моем приложении, если я перейду на такой сайт, как этот , и щелкну ссылку «Доступно в App Store», UIWebView выдаст ошибку «Error Domain = WebKitErrorDomain Code = 101. Невозможно отобразить URL-адрес ".
Немного погуглив, Я понял, что мне нужно перехватывать запросы на ссылки приложений и заставить iOS обрабатывать их. Я начал с того, что посмотрел, начинается ли схема с «itms» в -webView: shouldStartLoadWithRequest: navigationType:
, но понял, что могут быть и другие виды ссылок на приложения, которые система может обрабатывать. Поэтому вместо этого я придумал следующее:
- (void)webView:(UIWebView *)wv didFailLoadWithError:(NSError *)error {
// Give iOS a chance to open it.
NSURL *url = [NSURL URLWithString:[error.userInfo objectForKey:@"NSErrorFailingURLStringKey"]];
if ([error.domain isEqual:@"WebKitErrorDomain"]
&& error.code == 101
&& [[UIApplication sharedApplication]canOpenURL:url])
{
[[UIApplication sharedApplication]openURL:url];
return;
}
// Normal error handling…
}
У меня есть два вопроса по этому поводу:
-webView: shouldStartLoadWithRequest: navigationType:
, поэтому это немного раздражает. Как вы обрабатываете такие запросы?