2016-06-14 58 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