|
@@ -23,47 +23,64 @@
|
|
|
|
|
|
import Foundation
|
|
import Foundation
|
|
|
|
|
|
-class NCRichdocument: NSObject, SwiftWebVCDelegate {
|
|
|
|
|
|
+class NCRichdocument: NSObject, WKNavigationDelegate, WKScriptMessageHandler {
|
|
|
|
|
|
@objc static let sharedInstance: NCRichdocument = {
|
|
@objc static let sharedInstance: NCRichdocument = {
|
|
let instance = NCRichdocument()
|
|
let instance = NCRichdocument()
|
|
return instance
|
|
return instance
|
|
}()
|
|
}()
|
|
|
|
|
|
|
|
+ var webView: WKWebView?
|
|
|
|
+ var request: URLRequest!
|
|
|
|
+ var viewDetail: CCDetail?
|
|
let appDelegate = UIApplication.shared.delegate as! AppDelegate
|
|
let appDelegate = UIApplication.shared.delegate as! AppDelegate
|
|
|
|
|
|
- @objc func viewRichDocumentAt(_ link: String, navigationViewController: UINavigationController) {
|
|
|
|
|
|
+ @objc func viewRichDocumentAt(_ link: String, viewDetail: CCDetail) {
|
|
|
|
|
|
- let webVC = SwiftWebVC(urlString: link, hideToolbar: true)
|
|
|
|
- webVC.delegate = self
|
|
|
|
- if navigationViewController.viewControllers.count > 1 {
|
|
|
|
- navigationViewController.setViewControllers([navigationViewController.viewControllers.first!, webVC], animated: false)
|
|
|
|
- } else {
|
|
|
|
- navigationViewController.setViewControllers([webVC], animated: false)
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- func didStartLoading() {
|
|
|
|
- print("Started loading.")
|
|
|
|
|
|
+ self.viewDetail = viewDetail
|
|
|
|
+
|
|
|
|
+ let contentController = WKUserContentController()
|
|
|
|
+ contentController.add(self, name: "RichDocumentsMobileInterface")
|
|
|
|
+ let configuration = WKWebViewConfiguration()
|
|
|
|
+ configuration.userContentController = contentController
|
|
|
|
+
|
|
|
|
+ webView = WKWebView(frame: viewDetail.view.bounds, configuration: configuration)
|
|
|
|
+ webView?.autoresizingMask = [.flexibleWidth, .flexibleHeight]
|
|
|
|
+ webView?.navigationDelegate = self
|
|
|
|
+
|
|
|
|
+ self.request = URLRequest(url: URL(string: link)!)
|
|
|
|
+ self.request.addValue("true", forHTTPHeaderField: "OCS-APIRequest")
|
|
|
|
+ let language = NSLocale.preferredLanguages[0] as String
|
|
|
|
+ self.request.addValue(language, forHTTPHeaderField: "Accept-Language")
|
|
|
|
+
|
|
|
|
+ let userAgent : String = CCUtility.getUserAgent()
|
|
|
|
+ webView!.customUserAgent = userAgent
|
|
|
|
+ webView!.load(self.request!)
|
|
|
|
+
|
|
|
|
+ viewDetail.view.addSubview(webView!)
|
|
}
|
|
}
|
|
|
|
|
|
- func didReceiveServerRedirectForProvisionalNavigation(url: URL) {
|
|
|
|
-
|
|
|
|
|
|
+ public func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
|
|
|
|
+ print("WKScriptMessage");
|
|
}
|
|
}
|
|
|
|
|
|
- func didFinishLoading(success: Bool) {
|
|
|
|
- print("Finished loading. Success: \(success).")
|
|
|
|
|
|
+ public func webView(_ webView: WKWebView, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
|
|
|
|
+ if let serverTrust = challenge.protectionSpace.serverTrust {
|
|
|
|
+ completionHandler(Foundation.URLSession.AuthChallengeDisposition.useCredential, URLCredential(trust: serverTrust))
|
|
|
|
+ } else {
|
|
|
|
+ completionHandler(URLSession.AuthChallengeDisposition.useCredential, nil);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
- func didFinishLoading(success: Bool, url: URL) {
|
|
|
|
- print("Finished loading. Success: \(success).")
|
|
|
|
|
|
+ public func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
|
|
|
|
+ print("didStartProvisionalNavigation");
|
|
}
|
|
}
|
|
|
|
|
|
- func webDismiss() {
|
|
|
|
- print("Web dismiss.")
|
|
|
|
|
|
+ public func webView(_ webView: WKWebView, didReceiveServerRedirectForProvisionalNavigation navigation: WKNavigation!) {
|
|
|
|
+ print("didReceiveServerRedirectForProvisionalNavigation");
|
|
}
|
|
}
|
|
|
|
|
|
- func decidePolicyForNavigationAction(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
|
|
|
|
- decisionHandler(.allow)
|
|
|
|
|
|
+ public func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
|
|
|
|
+ print("didFinish");
|
|
}
|
|
}
|
|
}
|
|
}
|