From 443057d49f5ab7a0a9cafa303ea83b86238cb416 Mon Sep 17 00:00:00 2001 From: Andrey Blinov Date: Mon, 1 Jun 2020 12:58:55 +0700 Subject: [PATCH] open link in browser --- OnlineChatSdk/Classes/ChatController.swift | 25 ++++++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/OnlineChatSdk/Classes/ChatController.swift b/OnlineChatSdk/Classes/ChatController.swift index ddf5c17..50ed693 100644 --- a/OnlineChatSdk/Classes/ChatController.swift +++ b/OnlineChatSdk/Classes/ChatController.swift @@ -10,7 +10,7 @@ import UIKit import WebKit import AVFoundation -open class ChatController: UIViewController, WKNavigationDelegate, WKScriptMessageHandler{ +open class ChatController: UIViewController, WKNavigationDelegate, WKScriptMessageHandler { public static let event_operatorSendMessage = "operatorSendMessage"; public static let event_clientSendMessage = "clientSendMessage"; @@ -31,6 +31,7 @@ open class ChatController: UIViewController, WKNavigationDelegate, WKScriptMessa public var chatView: WKWebView! private var callJs: Array! private var didFinish: Bool = false + private var widgetUrl: String = "" override public func loadView() { let contentController = WKUserContentController() @@ -64,7 +65,18 @@ open class ChatController: UIViewController, WKNavigationDelegate, WKScriptMessa self.callJs = nil } } - + + public func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> ()) { + if let host = navigationAction.request.url?.host { + if navigationAction.request.url?.absoluteString == self.widgetUrl { + decisionHandler(.allow) + return + } + } + UIApplication.shared.openURL(navigationAction.request.url!) + decisionHandler(.cancel) + } + private func getCallJsMethod(_ name: String, params: Array) -> String { var res: String = "window.MeTalk('" res.append(name) @@ -110,16 +122,15 @@ open class ChatController: UIViewController, WKNavigationDelegate, WKScriptMessa if !clientId.isEmpty { setup["clientId"] = clientId } - let surl = "https://admin.verbox.ru/support/chat/\(id)/\(domain)" -// print("tetttt : \(surl)") - var url = URL(string: surl) + self.widgetUrl = "https://admin.verbox.ru/support/chat/\(id)/\(domain)" + var url = URL(string: self.widgetUrl) if !setup.isEmpty { var urlComponents = URLComponents(url: url!, resolvingAgainstBaseURL: false) urlComponents?.queryItems = [URLQueryItem(name: "setup", value: toJson(setup as AnyObject))] url = urlComponents!.url! } if url == nil { - url = URL(string: surl) + url = URL(string: self.widgetUrl) } self.chatView.load(URLRequest(url: url!)) @@ -138,7 +149,7 @@ open class ChatController: UIViewController, WKNavigationDelegate, WKScriptMessa } public func callJsSetClientInfo(_ jsonInfo: String) { - callJsMethod(ChatController.method_setClientInfo, params: [jsonInfo]) + callJsMethod(ChatController.method_setClientInfo, params: [Command(jsonInfo)]) } public func callJsSetTarget(_ reason: String) {