2016-06-14 13 views
0

私のアプリケーションでWKWebViewを使用しています。私は、アプリのトランスポートセキュリティを通じて任意の負荷を許可しても、さまざまなリンクをクリックできないことを発見しました。たとえば、他のプロバイダからのAdsenseのすべてのコンテンツと広告をクリックしても効果はありません。 WebViewは進捗状況を返さない。WKWebViewでクリックできない広告

さらに、iTunesリンク(App Storeバッジなど)をクリックしようとしてもApp Storeアプリケーションにリダイレクトされません。 WebViewは進捗状況を登録しますが、最初のページを残すことはありません。

別の例:Pinterestアプリケーションの特定のピンを開くように促すPinterestホームページのバッジをクリックすると、bnc.itというURLが読み込まれ、空白のページが表示されます。これはPinterest.comの中間のものですとPinterestのiPhoneアプリケーションです。

これらの要求をすべて処理するWKWebViewの入手方法を知っている方は、どうすればよいのでしょうか非常に感謝しています。

+0

申し訳ありませんが、私はちょうど誰にもアイデアがあると思っています –

答えて

1

大丈夫です。私はそれがどのように機能するかを考えました。問題は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) 
    } 

はもちろん、あなたが、私はまた私のGithubで完全な単純化されたソースコードを入れている

webView.uiDelegate = self 
webView.navigationDelegate = self 

を宣言していることを確認する必要があります。あなたは私が何を意味するかわからない場合は、以下のアドレスでそれをダウンロードしてお気軽に:

https://github.com/babyghost666/WKWebViewAdsense

あなたはWKWebViewは後に何かを行いたい場合は

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

、交換してください気軽にユーザーはAdsenseをクリックした。この回答が役立つ場合。投票して受け入れてください。ありがとう。

+0

ありがとう、束。これは動作しているようです! –

+0

あなたは歓迎されています。投票ボタンをクリックしてポイントを得ることができますか? – babyghost

関連する問題