WkwebviewにロードしたWebページの1つに、次のiTunesアプリのリンクがあります
https://itunes.apple.com/gb/app/xx-yy-zz/id435919263?mt=8
開くと、次のアラートが表示されます
これが私が持っているエラーです。
{
"[errorCode]" = 0;
"[errorDescription]" = "Redirection to URL with a scheme that is not HTTP(S)";
"[errordetail]" = "Con:myappxxxx:myorder:webview:networkerror";
"[localizedRecoverySuggestion]" = "";
"[url]" = "itms-appss://apps.apple.com/gb/app/xx-yy-zz/id435919263";
}
同じiTunesリンク(https://itunes.apple.com/gb/app/xx-yy-zz/id435919263?mt=8)をUIWebviewで開くと、URLが次のURLにリダイレクトされ、アプリがで開くのがわかりました。 appstore
itms-appss://itunes.apple.com/gb/app/xx-yy-zz/id435919263?mt=8
一方、Wkwebviewでは、URLは次のURLにリダイレクトされます
itms-appss://apps.apple.com/gb/app/xx-yy-zz/id435919263
どんな助けでも大歓迎です
更新
トランスポートのセキュリティのために任意のアップロードをtrueに試しましたが、問題はまだ残っています。
Error Domain = Code = 0 "HTTP(S)ではないスキームを使用したURLへのリダイレクト" UserInfo = {_ WKRecoveryAttempterErrorKey =、NSErrorFailingURLStringKey = itms-appss://apps.apple.com/gb/app/xx-yy-zz / id435919263、NSErrorFailingURLKey = itms-appss://apps.apple.com/gb/app/xx-yy-zz/id435919263、NSLocalizedDescription = HTTP(S)以外のスキームを使用したURLへのリダイレクト}
wkwebviewのデリゲートメソッドでitunesリンクをインターセプトし、openURLを使用してURLを開くことができると思います
以下のソースコードは、wkwebviewですべてのitms-appssリンクを開きます。WKNavigationDelegateに準拠することを忘れないでください
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
if ([webURL.scheme isEqualToString:@"itms-appss"])
{
UIApplication *app = [UIApplication sharedApplication];
if ([app canOpenURL:webURL])
{
[self.webviewObj stopLoading];
[app openURL:[NSURL URLWithString:[webURL absoluteString]]];
decisionHandler(WKNavigationActionPolicyCancel);
} else{
decisionHandler(WKNavigationActionPolicyCancel);
}
}
else
{
decisionHandler(WKNavigationActionPolicyAllow);
}
return;
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加