首页 文章

广告无法在WKWebView中点击

提问于
浏览
1

我在我的应用程序中使用WKWebView . 我发现即使我通过app transport security允许任意加载,也无法点击各种链接 . 例如,单击所有Adsense内容和来自其他提供商的广告无效 . WebView甚至没有返回任何进度 .

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

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

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

1 回答

  • 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后执行其他操作 . 如果这个答案有帮助 . 请投票并接受 . 谢谢 .

相关问题