私は最近、私のUIWebViewがITMSリンクで窒息していることがわかりました。具体的には、私のアプリケーションのUIWebViewから、this oneのようなサイトに移動し、 "App Storeで利用可能"リンクをクリックすると、UIWebViewは "Error Domain = WebKitErrorDomain Code = 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文字列を取得しています。そのものは残っている可能性がありますか?
- これは、上記のリンク先のアプリケーションストアリンクでは機能しますが、私のアプリに戻ったときに、「フレーム読み込み中断」で失敗した後続のリクエストが失敗したようです。どうすればそれを取り除くことができますか?私はOSが
-webView:shouldStartLoadWithRequest:navigationType:
からのリクエストを処理するときには起こらないので、ちょっと面倒です。
あなたはのようなリクエストを処理しますか?
iTunesだけでなく、私もWebビューを通じてFacebookのログインでこれを持っていました。 – Adam
これも私にとって素晴らしい仕事でした。ありがとう! – spstanley
私の一日を保存してくれてありがとう – duan