2016-06-14 5 views
0

Я использую WKWebView в своем приложении. Я обнаружил, что различные ссылки не доступны для кликов, даже если я допускаю произвольные нагрузки через безопасность транспорта приложений. Например, нажатие всего контента Adsense и рекламы от других поставщиков не влияет. WebView даже не возвращает никакого прогресса.Объявления не доступны для просмотра в WKWebView

Кроме того, попытка щелкнуть по ссылкам iTunes (например, значок магазина приложений) не будет перенаправлена ​​в приложение App Store. WebView зарегистрирует прогресс, однако он не покинет начальную страницу.

Другой пример: щелчок значка на Pinterest hompage, который предлагает вам открыть определенные контакты в приложении Pinterest, будет загружать только URL-адрес bnc.it и отображать пустую страницу, что я предполагаю быть посредником между 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) 
    } 

Конечно, вы должны убедиться, что вы объявили

webView.uiDelegate = self 
webView.navigationDelegate = self 

Я также поставил полный упрощенный исходный код на моем Github. Вы можете скачать его по адресу, если вы не знаете, что я имею в виду:

https://github.com/babyghost666/WKWebViewAdsense

Вы можете заменить,

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

если вы хотите WKWebView сделать что-то еще после того, как пользователь нажал на Adsense. Если этот ответ поможет. Прошу проголосовать и принять. Благодарю.

+0

Спасибо за кучу. Кажется, это работает! –

+0

Вас приветствуют. Вы не хотите нажимать кнопку «вверх», чтобы я мог набрать какой-то момент? – babyghost

Смежные вопросы