2016-06-14 68 views
0

我在我的应用程序中使用WKWebView。我发现各种链接都不可点击,即使我允许通过应用程序传输安全性进行任意加载。例如,点击所有Adsense内容和来自其他提供商的广告无效。 WebView甚至不会返回任何进度。广告在WKWebView中不可点击

此外,尝试点击iTunes链接(即App Store徽章)将不会重定向到App Store应用程序。 WebView将注册进度,但不会离开初始页面。

另一个示例:单击Pinterest页面上的徽章,提示您在Pinterest应用中打开某些针脚,将只加载bnc.it URL并显示一个空白页面,这是我认为是Pinterest.com和Pinterest iPhone应用程序。

如果有人知道如何让WKWebView处理所有这些请求,我将非常感激听到如何去做。

+0

对不起,碰到这个,但我只是想知道如果有人有任何想法 –

回答

1

好的。我已经想到它是如何工作的。问题是关于导航类型。我已经使用下面的代表来完成这项工作。我已经使用我的应用程序进行过测试,并且可能有效。只有AdSense广告才会打开Safari。

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { 
     let requestedURL = navigationAction.request.url 

     if navigationAction.navigationType == .linkActivated{ 
      print("You have clicked the requested URL \(requestedURL)") 
      if requestedURL?.absoluteString.contains("doubleclick.net") == true{ 
       UIApplication.shared.open(requestedURL!, options: [:], completionHandler: nil) 
       decisionHandler(.cancel) 
      } 
     } 
     decisionHandler(.allow) 
    } 

当然,你需要确保你已经宣布

webView.uiDelegate = self 
webView.navigationDelegate = self 

我也把完整简化源代码,在我的Github上。随意在以下地址下载它,如果你不知道我的意思:

https://github.com/babyghost666/WKWebViewAdsense

随意更换,

UIApplication.shared.open(requestedURL!, options: [:], completionHandler: nil) 

如果你想WKWebView做些别的事情后用户点击了Adsense。如果这个答案有帮助。请投票并接受。谢谢。

+0

谢谢一堆。这似乎工作! –

+0

欢迎您。你介意点击^投票按钮,以便我可以获得一些意见? – babyghost