广告无法在WKWebView中点击

时间:2016-06-14 23:46:34

标签: ios wkwebview

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

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

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

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

1 个答案:

答案 0 :(得分:2)

好。我知道它是如何工作的。问题是关于navigationType。我使用了以下代理来完成这项工作。我已经使用我的应用程序进行了测试,但它很有用。只有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后执行其他操作。如果这个答案有帮助。请投票并接受。感谢。