WKWebView 中的广告不可点击
Ads not clickable in WKWebView
我在我的应用程序中使用 WKWebView。我发现很多链接都不可点击,即使我通过应用程序传输安全性允许任意加载也是如此。例如,点击所有 Adsense 内容和来自其他提供商的广告没有效果。 WebView 甚至 return 没有任何进展。
此外,尝试点击 iTunes 链接(即 App Store 徽章)不会重定向到 App Store 应用程序。 WebView 将记录进度,但不会离开初始页面。
另一个例子:点击 Pinterest 主页上提示您在 Pinterest 应用程序中打开某些图钉的徽章只会加载 bnc.it
URL 并显示一个空白页面,这就是我假设是 Pinterest.com 和 Pinterest iPhone 应用程序之间的中介。
如果有人知道如何让 WKWebView 处理所有这些此类请求,我将不胜感激。
好的。我已经知道它是如何工作的了。问题与导航类型有关。我已经使用以下委托来完成这项工作。我已经用我的应用程序进行了测试,它可能会起作用。只有 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 后执行其他操作。如果这个答案有帮助。请投票并接受。谢谢
我在我的应用程序中使用 WKWebView。我发现很多链接都不可点击,即使我通过应用程序传输安全性允许任意加载也是如此。例如,点击所有 Adsense 内容和来自其他提供商的广告没有效果。 WebView 甚至 return 没有任何进展。
此外,尝试点击 iTunes 链接(即 App Store 徽章)不会重定向到 App Store 应用程序。 WebView 将记录进度,但不会离开初始页面。
另一个例子:点击 Pinterest 主页上提示您在 Pinterest 应用程序中打开某些图钉的徽章只会加载 bnc.it
URL 并显示一个空白页面,这就是我假设是 Pinterest.com 和 Pinterest iPhone 应用程序之间的中介。
如果有人知道如何让 WKWebView 处理所有这些此类请求,我将不胜感激。
好的。我已经知道它是如何工作的了。问题与导航类型有关。我已经使用以下委托来完成这项工作。我已经用我的应用程序进行了测试,它可能会起作用。只有 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 后执行其他操作。如果这个答案有帮助。请投票并接受。谢谢