2016-06-14 9 views
0

Ich verwende WKWebView in einer meiner Anwendungen. Ich habe festgestellt, dass eine Vielzahl von Links nicht anklickbar ist, selbst wenn ich willkürliche Ladevorgänge über die Sicherheit des App-Transports erlaube. Wenn Sie beispielsweise auf alle Adsense-Inhalte und Anzeigen anderer Anbieter klicken, hat dies keine Auswirkungen. Das WebView gibt nicht einmal einen Fortschritt zurück.In WKWebView nicht anklickbare Anzeigen

Darüber hinaus wird der Versuch, auf iTunes-Links (d. H. Ein App Store-Logo) zu klicken, nicht auf die Anwendung App Store umgeleitet. Der WebView registriert den Fortschritt, jedoch wird die Startseite nicht verlassen.

Ein anderes Beispiel: Klicken Sie auf das Abzeichen auf der Pinterest-Homepage, das Sie zum Öffnen bestimmter Pins in der Pinterest App auffordert, lädt nur eine bnc.it URL und zeigt eine leere Seite an, die ich als Vermittler zwischen Pinterest.com erachte und die Pinterest iPhone Anwendung.

Wenn jemand weiß, wie man WKWebView bekommt, um all diese Anfragen zu bearbeiten, würde ich es sehr schätzen, wenn ich höre, wie das geht.

+0

Entschuldigen Sie, um dieses zu stoßen, aber ich frage mich nur, ob jemand irgendwelche Ideen hat –

Antwort

1

Okay. Ich habe herausgefunden, wie es funktioniert. Das Problem betrifft den navigationType. Ich habe den folgenden Delegierten verwendet, um diese Arbeit zu erledigen. Ich wurde mit meinen Apps getestet und es funktioniert wahrscheinlich. Nur die Adsense-Anzeigen öffnen 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) 
    } 

Natürlich müssen Sie sicherstellen, dass Sie

erklärt haben
webView.uiDelegate = self 
webView.navigationDelegate = self 

ich auch die volle vereinfachte Quellcode an meinem Github gesetzt haben. Fühlen Sie sich frei, um es unter der folgenden Adresse herunterladen, wenn Sie nicht wissen, was ich meine:

https://github.com/babyghost666/WKWebViewAdsense

Fühlen Sie sich frei zu ersetzen,

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

, wenn Sie die WKWebView etwas anderes tun, nachdem die wollen Benutzer klickte auf den Adsense. Wenn diese Antwort hilft. Bitte abstimmen und akzeptieren. Vielen Dank.

+0

Vielen Dank. Dies scheint zu funktionieren! –

+0

Sie sind willkommen. Stört es dich, auf den Abstimmknopf zu klicken, damit ich etwas erreichen kann? – babyghost