Ответ 1
К сожалению, WKWebView
не отправляет URL-адреса с настраиваемыми схемами обратно в ваше приложение для автоматической обработки.
Если вы попробуете это без специальной обработки, это будет выглядеть так, как ваш веб-вид зависает после того, как пользователь будет аутентифицироваться с помощью стороннего сервиса, и вы никогда не получите обратный вызов. Вы можете попробовать использовать URI переадресации со стандартной схемой http или https, но тогда WKWebView
просто попытается загрузить ее, а не направлять ее из веб-представления в ваше родное приложение для обработки.
Чтобы обработать перенаправление, вам нужно реализовать decidePolicyForNavigationAction
в WebPolicyDelegate
вашего WKWebView
, чтобы обнаружить настраиваемую схему URL и перенаправить ее в ваше приложение для обработки:
func webView(webView: WKWebView, decidePolicyForNavigationAction navigationAction: WKNavigationAction, decisionHandler: ((WKNavigationActionPolicy) -> Void)) {
print("webView:\(webView) decidePolicyForNavigationAction:\(navigationAction) decisionHandler:\(decisionHandler)")
let app = UIApplication.sharedApplication()
let url = navigationAction.request.URL
let myScheme: NSString = "https"
if (url!.scheme == myScheme) && app.canOpenURL(url!) {
print("redirect detected..")
// intercepting redirect, do whatever you want
app.openURL(url!) // open the original url
decisionHandler(.Cancel)
return
}
decisionHandler(.Allow)
}
Вы можете найти подробную информацию здесь