我最近發現我的UIWebView在ITMS鏈接上窒息。具體來說,從我的應用程序的UIWebView,如果我導航到一個網站,如this one,並點擊「在App Store上可用」鏈接,UIWebView將錯誤出現「錯誤域= WebKitErrorDomain代碼= 101 URL無法顯示「。如何處理UIWebView中的應用程序URL?
經過一番Google搜索,我意識到我需要捕捉應用程序鏈接的請求,並讓iOS處理它們。我首先看看-webView:shouldStartLoadWithRequest:navigationType:
中的方案是否以「itms」開頭,但意識到系統可能會處理其他類型的應用程序鏈接。所以,我想出了這個,而是:
- (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…
}
我對這個兩個問題:
- 這是理智?我特別檢查錯誤域和錯誤代碼,並從userInfo獲取URL字符串。這些東西可能會保留嗎?
- 這對於上面鏈接的應用商店鏈接起作用,但是當我切換回我的應用程序時,似乎出現了一個後來失敗的請求,出現「幀負載中斷」失敗。我怎麼能擺脫那個?當我有操作系統處理來自
-webView:shouldStartLoadWithRequest:navigationType:
的請求時,不會發生這種情況,所以這有點煩人。
如何處理此類請求?
不只是iTunes - 我也是通過網絡瀏覽器登錄Facebook的。 – Adam 2012-11-13 06:10:51