同步操作将从 兰德网络O2OA平台软件/O2OA 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
//// BaseWebViewUIViewController.swift// O2Platform//// Created by 刘振兴 on 2016年10月11日.// Copyright © 2016年 zoneland. All rights reserved.//import UIKitimport WebKitimport CocoaLumberjackprotocol BaseWebViewUIViewControllerJSDelegate {func closeUIViewWindow()func actionBarLoaded(show: Bool)}protocol O2WKScriptMessageHandlerImplement {func userController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage)}open class BaseWebViewUIViewController: UIViewController {var webView:WKWebView!var delegate: BaseWebViewUIViewControllerJSDelegate?var o2WKScriptHandlers: [String : O2WKScriptMessageHandlerImplement] = [:]//继承的子类如果要添加MessageHandler必须在theWebView方法前使用func addScriptMessageHandler(key: String, handler: O2WKScriptMessageHandlerImplement) {o2WKScriptHandlers[key] = handler}open func theWebView(){let baseJsHandler = O2BaseJsMessageHandler(viewController: self)// bbs 回复addScriptMessageHandler(key: "ReplyAction", handler: baseJsHandler)// protal已经存在ActionBaraddScriptMessageHandler(key: "actionBarLoaded", handler: baseJsHandler)// 打开工作 {"work":"", "workCompleted":"", "title":""}addScriptMessageHandler(key: "openO2Work", handler: baseJsHandler)// 4个分类 task taskCompleted read readCompletedaddScriptMessageHandler(key: "openO2WorkSpace", handler: baseJsHandler)// 打开cms appIdaddScriptMessageHandler(key: "openO2CmsApplication", handler: baseJsHandler)// 打开cms docId docTitleaddScriptMessageHandler(key: "openO2CmsDocument", handler: baseJsHandler)// 打开meetingaddScriptMessageHandler(key: "openO2Meeting", handler: baseJsHandler)// 打开 calendaraddScriptMessageHandler(key: "openO2Calendar", handler: baseJsHandler)// 打开扫一扫addScriptMessageHandler(key: "openScan", handler: baseJsHandler)addScriptMessageHandler(key: "openO2Alert", handler: baseJsHandler)// 打开钉钉addScriptMessageHandler(key: "openDingtalk", handler: baseJsHandler)// 关闭当前UIViewControlleraddScriptMessageHandler(key:"closeNativeWindow", handler: baseJsHandler)// 上传图片到云盘,放入对应的业务区域addScriptMessageHandler(key: "uploadImage2FileStorage", handler: baseJsHandler)// 打印日志addScriptMessageHandler(key: "o2mLog", handler: baseJsHandler)//o2m.notificationlet o2Notification = O2JsApiNotification(viewController: self)addScriptMessageHandler(key: "o2mNotification", handler: o2Notification)//o2m.utillet o2Util = O2JsApiUtil(viewController: self)addScriptMessageHandler(key: "o2mUtil", handler: o2Util)setupWebView()}public func setupWebView() {let userContentController = WKUserContentController()//cookie脚本if let cookies = HTTPCookieStorage.shared.cookies {let script = getJSCookiesString(cookies: cookies)let cookieScript = WKUserScript(source: script, injectionTime: WKUserScriptInjectionTime.atDocumentStart, forMainFrameOnly: false)userContentController.addUserScript(cookieScript)}// console.log 打印到ios log debug用let consoleLog = "console.log = (function(oriLogFunc){return function(str){window.webkit.messageHandlers.o2mLog.postMessage(str);oriLogFunc.call(console,str);} })(console.log);"let logScript = WKUserScript(source: consoleLog, injectionTime: WKUserScriptInjectionTime.atDocumentStart, forMainFrameOnly: false)userContentController.addUserScript(logScript)let webViewConfig = WKWebViewConfiguration()webViewConfig.userContentController = userContentController//加入js-app message handlerfor item in o2WKScriptHandlers {userContentController.add(self, name: item.key)}self.webView = WKWebView(frame: self.view.frame, configuration: webViewConfig)}///Generates script to create given cookiespublic func getJSCookiesString(cookies: [HTTPCookie]) -> String {var result = ""let dateFormatter = DateFormatter()dateFormatter.timeZone = NSTimeZone(abbreviation: "UTC") as TimeZone?dateFormatter.dateFormat = "EEE, d MMM yyyy HH:mm:ss zzz"for cookie in cookies {result += "document.cookie='\(cookie.name)=\(cookie.value); domain=\(cookie.domain); path=\(cookie.path); "if let date = cookie.expiresDate {result += "expires=\(dateFormatter.string(from: date)); "}if (cookie.isSecure) {result += "secure; "}result += "'; "}return result}}extension BaseWebViewUIViewController: WKScriptMessageHandler {public func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {let name = message.nameif let handler = o2WKScriptHandlers[name] {handler.userController(userContentController, didReceive: message)}else {let err = "没有找到对应的key,key:\(name)"self.showError(title: err)}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。