




Вам нужен прослушиватель кликов.
Вы можете использовать WKWebView для отображения интерактивного веб-контента в своем приложении. Идеально подходит для отображения разметки HTML, стилизованного текстового содержимого или полных веб-страниц. После этого вам нужно обработать кнопку социальной сети, которую вы звоните, и отправленные данные, если таковые имеются...
Ответ на события WKWebView с помощью WKNavigationDelegate
Веб-представление WKWebView имеет два основных протокола делегата и свойства:
Из этих двух протоколов делегата наиболее часто используется WKNavigationDelegate. Итак, давайте подключимся к некоторым событиям навигации по страницам! Мы сделаем это с помощью следующих функций делегата:
webView(_:didStartProvisionalNavigation:)
webView(_:didCommit:)
webView(_:didFinish:)
webView(_:didFail:withError:)
webView(_:didFailProvisionalNavigation:withError:)
Во-первых, давайте примем протокол и установим делегата webView. Вот как:
Добавьте протокол WKNavigationDelegate в объявление класса вашего контроллера представления, например: class WebViewController: UIViewController, WKNavigationDelegate
Перед загрузкой веб-запроса установите для свойства navigationDelegate веб-представления значение self, например: webView?.navigationDelegate = self
Затем реализуйте пять функций делегата, описанных ранее. Установите тела их функций в print(#function), чтобы мы могли видеть порядок, в котором вызываются функции.
Так:
func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!)
{
print(#function)
}
какую ссылку вы хотите открыть, измените «facebook», «twitter», и вы также можете добавить больше ссылок
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
if navigationAction.navigationType == .linkActivated {
if let url = navigationAction.request.url ,UIApplication.shared.canOpenURL(url) {
// let urlString = try! String(contentsOf: url)
if (url.absoluteString.range(of: "facebook.com") != nil || url.absoluteString.range(of: "twitter.com") != nil){
//UIApplication.shared.open(url)
print("Redirected to browser. No need to open it locally")
decisionHandler(.cancel)
}else{
print("Open it locally")
decisionHandler(.allow)
}
}