Commit a69d0eed7551c15c2ce9666dc36e886c0b03a259

Authored by “张旭”
1 parent 692aed9e

将CNWebView和CNWebViewController的webView统一为CNWebView

metaCode/Classes/Main/HomePage/Controller/WebController/CNWebView.swift
@@ -11,6 +11,10 @@ import WebViewJavascriptBridge @@ -11,6 +11,10 @@ import WebViewJavascriptBridge
11 import CNLiveShareToolKit 11 import CNLiveShareToolKit
12 import CommonCrypto 12 import CommonCrypto
13 import CNLiveBusinessTools 13 import CNLiveBusinessTools
  14 +import SKPhotoBrowser
  15 +
  16 +//更新Web控制器导航回调
  17 +typealias cnWebControllerUpdateNavBlock = (_ isFinish:Bool , _ titleName:String ,_ isDecidePolicy:Bool , _ urlStr:String)->Void
14 18
15 class CNWebView:UIView,WKNavigationDelegate{ 19 class CNWebView:UIView,WKNavigationDelegate{
16 20
@@ -21,11 +25,15 @@ class CNWebView:UIView,WKNavigationDelegate{ @@ -21,11 +25,15 @@ class CNWebView:UIView,WKNavigationDelegate{
21 return cnWebView 25 return cnWebView
22 }() 26 }()
23 27
24 -  
25 var webUrl:URL?//初始URL 28 var webUrl:URL?//初始URL
26 var currentUrl:String = ""//当前网页的url 29 var currentUrl:String = ""//当前网页的url
27 var bridge:WKWebViewJavascriptBridge? 30 var bridge:WKWebViewJavascriptBridge?
28 31
  32 + //CNWebController
  33 + var isCNWebController:Bool = false//是否网页控制器
  34 + var webControllerUpdateNavBlock:cnWebControllerUpdateNavBlock?
  35 +
  36 +
29 init(frame: CGRect, configuration: WKWebViewConfiguration ,url:URL?) { 37 init(frame: CGRect, configuration: WKWebViewConfiguration ,url:URL?) {
30 super.init(frame: frame) 38 super.init(frame: frame)
31 self.configuration = configuration 39 self.configuration = configuration
@@ -56,8 +64,9 @@ class CNWebView:UIView,WKNavigationDelegate{ @@ -56,8 +64,9 @@ class CNWebView:UIView,WKNavigationDelegate{
56 self.bridge = WKWebViewJavascriptBridge(for: self.cnWebView) 64 self.bridge = WKWebViewJavascriptBridge(for: self.cnWebView)
57 self.bridge?.setWebViewDelegate(self) 65 self.bridge?.setWebViewDelegate(self)
58 } 66 }
59 - //h5拉起原生分享 js call oc 67 + //h5拉起原生
60 func configBridgeRegister() -> Void { 68 func configBridgeRegister() -> Void {
  69 + //h5拉起原生分享 js call oc
61 self.bridge?.registerHandler("wjjylzgVideoShare", handler: { data, responseCallback in 70 self.bridge?.registerHandler("wjjylzgVideoShare", handler: { data, responseCallback in
62 // print("js call oc\(data)") 71 // print("js call oc\(data)")
63 let dic = data as! Dictionary<String, String> 72 let dic = data as! Dictionary<String, String>
@@ -70,6 +79,33 @@ class CNWebView:UIView,WKNavigationDelegate{ @@ -70,6 +79,33 @@ class CNWebView:UIView,WKNavigationDelegate{
70 } 79 }
71 80
72 }) 81 })
  82 + // 网页内容图片预览
  83 + self.bridge?.registerHandler("wjjPreviewImage", handler: { data, responseCallback in
  84 + // print("js call oc\(data)")
  85 + var images = [SKPhoto]()
  86 + let dic = data as! Dictionary<String, Any>
  87 + let index = (dic["index"] as! NSString).integerValue
  88 + let imageArray = dic["imgArr"] as! NSArray
  89 + var imgArray = NSMutableArray()
  90 + for dict in imageArray {
  91 + var imgUrl = ""
  92 + if let dictemp = dict as? String{
  93 + imgArray.add(dictemp)
  94 + imgUrl = dictemp
  95 + }else if let dictemp = dict as? Dictionary<String, Any>{
  96 + imgArray.add(dictemp["src"] ?? "")
  97 + imgUrl = dictemp["src"] as! String
  98 + }
  99 + let photo = SKPhoto.photoWithImageURL(imgUrl)
  100 + photo.shouldCachePhotoURLImage = false
  101 + photo.photoURL = imgUrl
  102 + images.append(photo)
  103 + }
  104 + let browser = SKPhotoBrowser(photos: images)
  105 + browser.initializePageIndex(index)
  106 + currentViewController()?.present(browser, animated: true)
  107 +
  108 + })
73 } 109 }
74 110
75 required init?(coder: NSCoder) { 111 required init?(coder: NSCoder) {
@@ -143,7 +179,9 @@ class CNWebView:UIView,WKNavigationDelegate{ @@ -143,7 +179,9 @@ class CNWebView:UIView,WKNavigationDelegate{
143 // 页面加载完成之后调用 179 // 页面加载完成之后调用
144 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { 180 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
145 print("didFinish") 181 print("didFinish")
146 -// titleName = webView.title! 182 +// if (self.webControllerUpdateNavBlock?(true, "", false, "") != nil){
  183 + self.webControllerUpdateNavBlock?(true, webView.title!, false , "")
  184 +// }
147 } 185 }
148 // 页面加载失败时调用 186 // 页面加载失败时调用
149 func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) { 187 func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
@@ -170,7 +208,9 @@ class CNWebView:UIView,WKNavigationDelegate{ @@ -170,7 +208,9 @@ class CNWebView:UIView,WKNavigationDelegate{
170 var urlStr = (navigationAction.request.url?.absoluteString)! 208 var urlStr = (navigationAction.request.url?.absoluteString)!
171 209
172 if navigationAction.request.url?.host == WjjH5 { 210 if navigationAction.request.url?.host == WjjH5 {
173 - 211 +// if (self.webControllerUpdateNavBlock?(false, "", true, "") != nil){
  212 + self.webControllerUpdateNavBlock?(false, "", true , urlStr)
  213 +// }
174 // if urlStr.contains("&isWjjReport=true") || urlStr.contains("?isWjjReport=true"){ 214 // if urlStr.contains("&isWjjReport=true") || urlStr.contains("?isWjjReport=true"){
175 // self.rightNavBtns = [self.moreNavBtn] 215 // self.rightNavBtns = [self.moreNavBtn]
176 // self.moreNavBtn.isHidden = false 216 // self.moreNavBtn.isHidden = false
metaCode/Classes/Main/HomePage/Controller/WebController/CNWebViewController.swift
@@ -22,7 +22,7 @@ class CNWebViewController:CNLiveBaseViewController ,WKNavigationDelegate{ @@ -22,7 +22,7 @@ class CNWebViewController:CNLiveBaseViewController ,WKNavigationDelegate{
22 var bridge:WKWebViewJavascriptBridge? 22 var bridge:WKWebViewJavascriptBridge?
23 var currentUrl:String = ""//当前网页的url 23 var currentUrl:String = ""//当前网页的url
24 24
25 - lazy var webView: WKWebView = { 25 + lazy var webView: CNWebView = {
26 let configuration = WKWebViewConfiguration() 26 let configuration = WKWebViewConfiguration()
27 configuration.allowsInlineMediaPlayback = true 27 configuration.allowsInlineMediaPlayback = true
28 let preferences = WKPreferences() 28 let preferences = WKPreferences()
@@ -31,11 +31,11 @@ class CNWebViewController:CNLiveBaseViewController ,WKNavigationDelegate{ @@ -31,11 +31,11 @@ class CNWebViewController:CNLiveBaseViewController ,WKNavigationDelegate{
31 configuration.preferences.minimumFontSize = 0.0 31 configuration.preferences.minimumFontSize = 0.0
32 configuration.preferences = preferences 32 configuration.preferences = preferences
33 configuration.userContentController = WKUserContentController() 33 configuration.userContentController = WKUserContentController()
34 -  
35 - let webView = WKWebView(frame: CGRectMake(0, 0, Width, Height), configuration: configuration)  
36 - webView.scrollView.showsVerticalScrollIndicator = false  
37 - webView.scrollView.showsHorizontalScrollIndicator = false  
38 -// webView.navigationDelegate = self 34 + let webView = CNWebView(frame: CGRectMake(0, 0, Width, Height), configuration: configuration, url: _url)
  35 +// let webView = WKWebView(frame: CGRectMake(0, 0, Width, Height), configuration: configuration)
  36 + webView.cnWebView.scrollView.showsVerticalScrollIndicator = false
  37 + webView.cnWebView.scrollView.showsHorizontalScrollIndicator = false
  38 + webView.isCNWebController = true
39 return webView 39 return webView
40 }() 40 }()
41 41
@@ -63,83 +63,95 @@ class CNWebViewController:CNLiveBaseViewController ,WKNavigationDelegate{ @@ -63,83 +63,95 @@ class CNWebViewController:CNLiveBaseViewController ,WKNavigationDelegate{
63 super.viewDidLoad() 63 super.viewDidLoad()
64 navigationBarHidden = false 64 navigationBarHidden = false
65 self.view.addSubview(self.webView) 65 self.view.addSubview(self.webView)
  66 + self.webView.webControllerUpdateNavBlock = { isFinish , title,isDecidePolicy ,urlStr in
  67 + if isFinish{
  68 + self.titleName = title
  69 + }else if isDecidePolicy{
  70 + if urlStr.contains("&isWjjReport=true") || urlStr.contains("?isWjjReport=true"){
  71 + self.rightNavBtns = [self.moreNavBtn]
  72 + self.moreNavBtn.isHidden = false
  73 + }else{
  74 + self.moreNavBtn.isHidden = true
  75 + }
  76 + }
  77 + }
66 webView.snp.makeConstraints { make in 78 webView.snp.makeConstraints { make in
67 make.top.equalTo(get_system_nav_height()) 79 make.top.equalTo(get_system_nav_height())
68 make.left.right.bottom.equalToSuperview() 80 make.left.right.bottom.equalToSuperview()
69 } 81 }
70 - webView.evaluateJavaScript("navigator.userAgent") { [self] result, error in  
71 - let userAgent = result as! String  
72 - if error == nil && userAgent.count > 0 {  
73 - if !userAgent.contains(CNLiveMCEnvironmentManager.shared.base_web_UA) {  
74 - let newUserAgent = userAgent + CNLiveMCEnvironmentManager.shared.base_web_UA  
75 - webView.customUserAgent = newUserAgent  
76 -  
77 - if (_url != nil){  
78 - let urlStr = self.checkURLWithStr(urlStr: _url!.absoluteString)  
79 - self.currentUrl = urlStr  
80 -  
81 - webView.load(URLRequest.init(url:URL(string: urlStr)!))  
82 - }  
83 - self.configBridge()  
84 - self.configBridgeRegister()  
85 - }  
86 - }  
87 - }  
88 - }  
89 -  
90 - func configBridge(){  
91 - WKWebViewJavascriptBridge.enableLogging()  
92 - self.bridge = WKWebViewJavascriptBridge(for: self.webView)  
93 - self.bridge?.setWebViewDelegate(self) 82 +// webView.cnWebView.evaluateJavaScript("navigator.userAgent") { [self] result, error in
  83 +// let userAgent = result as! String
  84 +// if error == nil && userAgent.count > 0 {
  85 +// if !userAgent.contains(CNLiveMCEnvironmentManager.shared.base_web_UA) {
  86 +// let newUserAgent = userAgent + CNLiveMCEnvironmentManager.shared.base_web_UA
  87 +// webView.cnWebView.customUserAgent = newUserAgent
  88 +//
  89 +// if (_url != nil){
  90 +// let urlStr = self.checkURLWithStr(urlStr: _url!.absoluteString)
  91 +// self.currentUrl = urlStr
  92 +//
  93 +// webView.cnWebView.load(URLRequest.init(url:URL(string: urlStr)!))
  94 +// }
  95 +// self.configBridge()
  96 +// self.configBridgeRegister()
  97 +// }
  98 +// }
  99 +// }
94 } 100 }
95 -  
96 - func configBridgeRegister() -> Void {  
97 - //h5拉起原生分享 js call oc  
98 - self.bridge?.registerHandler("wjjylzgVideoShare", handler: { data, responseCallback in  
99 -// print("js call oc\(data)")  
100 - let dic = data as! Dictionary<String, String>  
101 - CNLiveShareManager.showShareViewWithParam(forShareTitle: dic["title"], shareUrl: dic["shareUrl"], shareDesc: dic["subTitle"], shareImage: dic["cover"], screenFull: false, hiddenWjj: true, hiddenQQ: false, hiddenWB: true, hiddenLifeCircle: true, hiddenWechatCircle: false, hiddenWechat: false, hiddenSafari: true, formVC: self, topImage: [], topTitles: [], platformType: .all) { title in  
102 -  
103 - } completerBlock: { resultType, platformType, typeString in  
104 - if resultType == .succ{  
105 -  
106 - }  
107 - }  
108 101
109 - })  
110 -  
111 - // 网页内容图片预览  
112 - self.bridge?.registerHandler("wjjPreviewImage", handler: { data, responseCallback in  
113 - // print("js call oc\(data)")  
114 - var images = [SKPhoto]()  
115 - let dic = data as! Dictionary<String, Any>  
116 - let index = (dic["index"] as! NSString).integerValue  
117 - let imageArray = dic["imgArr"] as! NSArray  
118 - var imgArray = NSMutableArray()  
119 - for dict in imageArray {  
120 - var imgUrl = ""  
121 - if let dictemp = dict as? String{  
122 - imgArray.add(dictemp)  
123 - imgUrl = dictemp  
124 - }else if let dictemp = dict as? Dictionary<String, Any>{  
125 - imgArray.add(dictemp["src"] ?? "")  
126 - imgUrl = dictemp["src"] as! String  
127 - }  
128 - let photo = SKPhoto.photoWithImageURL(imgUrl)  
129 - photo.shouldCachePhotoURLImage = false  
130 - photo.photoURL = imgUrl  
131 - images.append(photo)  
132 - }  
133 - let browser = SKPhotoBrowser(photos: images)  
134 - browser.initializePageIndex(index)  
135 - currentViewController()?.present(browser, animated: true)  
136 -  
137 - })  
138 - } 102 +// func configBridge(){
  103 +// WKWebViewJavascriptBridge.enableLogging()
  104 +// self.bridge = WKWebViewJavascriptBridge(for: self.webView.cnWebView)
  105 +// self.bridge?.setWebViewDelegate(self)
  106 +// }
  107 +//
  108 +// func configBridgeRegister() -> Void {
  109 +// //h5拉起原生分享 js call oc
  110 +// self.bridge?.registerHandler("wjjylzgVideoShare", handler: { data, responseCallback in
  111 +//// print("js call oc\(data)")
  112 +// let dic = data as! Dictionary<String, String>
  113 +// CNLiveShareManager.showShareViewWithParam(forShareTitle: dic["title"], shareUrl: dic["shareUrl"], shareDesc: dic["subTitle"], shareImage: dic["cover"], screenFull: false, hiddenWjj: true, hiddenQQ: false, hiddenWB: true, hiddenLifeCircle: true, hiddenWechatCircle: false, hiddenWechat: false, hiddenSafari: true, formVC: self, topImage: [], topTitles: [], platformType: .all) { title in
  114 +//
  115 +// } completerBlock: { resultType, platformType, typeString in
  116 +// if resultType == .succ{
  117 +//
  118 +// }
  119 +// }
  120 +//
  121 +// })
  122 +//
  123 +// // 网页内容图片预览
  124 +// self.bridge?.registerHandler("wjjPreviewImage", handler: { data, responseCallback in
  125 +// // print("js call oc\(data)")
  126 +// var images = [SKPhoto]()
  127 +// let dic = data as! Dictionary<String, Any>
  128 +// let index = (dic["index"] as! NSString).integerValue
  129 +// let imageArray = dic["imgArr"] as! NSArray
  130 +// var imgArray = NSMutableArray()
  131 +// for dict in imageArray {
  132 +// var imgUrl = ""
  133 +// if let dictemp = dict as? String{
  134 +// imgArray.add(dictemp)
  135 +// imgUrl = dictemp
  136 +// }else if let dictemp = dict as? Dictionary<String, Any>{
  137 +// imgArray.add(dictemp["src"] ?? "")
  138 +// imgUrl = dictemp["src"] as! String
  139 +// }
  140 +// let photo = SKPhoto.photoWithImageURL(imgUrl)
  141 +// photo.shouldCachePhotoURLImage = false
  142 +// photo.photoURL = imgUrl
  143 +// images.append(photo)
  144 +// }
  145 +// let browser = SKPhotoBrowser(photos: images)
  146 +// browser.initializePageIndex(index)
  147 +// currentViewController()?.present(browser, animated: true)
  148 +//
  149 +// })
  150 +// }
139 151
140 //点击...分享获取h5参数oc call js 152 //点击...分享获取h5参数oc call js
141 func configBridgeCallHander() -> Void { 153 func configBridgeCallHander() -> Void {
142 - self.bridge?.callHandler("wjjClientGetShareParaFromJS", data: ["":""], responseCallback: { data in 154 + self.webView.bridge?.callHandler("wjjClientGetShareParaFromJS", data: ["":""], responseCallback: { data in
143 // print("js call oc\(data)") 155 // print("js call oc\(data)")
144 let dic = data as! Dictionary<String, String> 156 let dic = data as! Dictionary<String, String>
145 // let shareType = dic["shareType"] 157 // let shareType = dic["shareType"]
@@ -169,59 +181,59 @@ class CNWebViewController:CNLiveBaseViewController ,WKNavigationDelegate{ @@ -169,59 +181,59 @@ class CNWebViewController:CNLiveBaseViewController ,WKNavigationDelegate{
169 }) 181 })
170 } 182 }
171 183
172 - func checkURLWithStr(urlStr:String) -> String{  
173 - if URL(string: urlStr)?.host != WjjH5 {  
174 - return urlStr//不是wjjh5不作处理  
175 - }  
176 - var str = urlStr  
177 - let date = Date()  
178 - let formatter = DateFormatter()  
179 - formatter.dateFormat = "yyyyMMdd"  
180 - let dateStr = formatter.string(from: date)  
181 - let sidStr = String(format: "%@%@", UserInfoManager.shared.userInfo.uid,dateStr)  
182 - let signStr = sidStr.crypt(operation: CCOperation(kCCEncrypt), key: CNLiveMCEnvironmentManager.shared.appKey)  
183 - //看是 appKey还是appKeywjj  
184 - let sidSignStr = (signStr ?? "").isEmpty ? "" : signStr  
185 - let sourceArray = str.components(separatedBy: "?")  
186 - let buildVersion = Bundle.main.infoDictionary!["CFBundleVersion"] as! String  
187 - let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String  
188 - let uuid = CNLiveBusinessTools.getUidForStat(Date())  
189 - if sourceArray.count == 1{  
190 - //是wjjh5且无参数  
191 - str = String(format: "%@?shareSid=%@&sid=%@&plat=i&ver=%@&version=%@&wjjFrom=apple&wjjUUID=%@&appId=%@&voteId=%@&wjjToken=%@", str,UserInfoManager.shared.userInfo.uid,UserInfoManager.shared.userInfo.uid,buildVersion,appVersion,uuid,CNLiveMCEnvironmentManager.shared.appId,sidSignStr!,UserInfoManager.shared.userInfo.token)  
192 - return str  
193 - }  
194 - //是wjjh5且有参数  
195 - let paraArr = NSMutableArray(array: ["shareSid=","sid=","plat=","ver=","version=","wjjFrom=","wjjUUID=","appId=","voteId=","wjjToken="])  
196 - let valueArr = NSMutableArray(array:[UserInfoManager.shared.userInfo.uid,UserInfoManager.shared.userInfo.uid,"i",buildVersion,appVersion,"apple",uuid,CNLiveMCEnvironmentManager.shared.appId,sidSignStr!,UserInfoManager.shared.userInfo.token])  
197 - var i = 0  
198 - for paraStr in paraArr{  
199 - let tempStr = paraStr as! String  
200 - let paramStr = "&".appending(tempStr)  
201 - let paramStr2 = "?".appending(tempStr)  
202 -  
203 - if str.contains(paramStr){  
204 - //包含则替换 &sid=  
205 - let lastStr = str.components(separatedBy: tempStr).last  
206 - let lastSeparatedStr = (lastStr?.components(separatedBy: "&").first)!  
207 - let oldStr = tempStr.appending(lastSeparatedStr)  
208 - let tempValueStr = tempStr.appending(valueArr[i] as! String)  
209 - str = str.replacingOccurrences(of: oldStr, with: tempValueStr)  
210 - }else if str.contains(paramStr2){  
211 - //包含则替换 &sid=  
212 - let lastStr = str.components(separatedBy: tempStr).last  
213 - let lastSeparatedStr = (lastStr?.components(separatedBy: "&").first)!  
214 - let oldStr = tempStr.appending(lastSeparatedStr)  
215 - let tempValueStr = tempStr.appending(valueArr[i] as! String)  
216 - str = str.replacingOccurrences(of: oldStr, with: tempValueStr)  
217 - }else{  
218 - //不包含则拼接  
219 - str = String(format: "%@&%@%@", str,tempStr,valueArr[i] as! String)  
220 - }  
221 - i = i + 1  
222 - }  
223 - return str  
224 - } 184 +// func checkURLWithStr(urlStr:String) -> String{
  185 +// if URL(string: urlStr)?.host != WjjH5 {
  186 +// return urlStr//不是wjjh5不作处理
  187 +// }
  188 +// var str = urlStr
  189 +// let date = Date()
  190 +// let formatter = DateFormatter()
  191 +// formatter.dateFormat = "yyyyMMdd"
  192 +// let dateStr = formatter.string(from: date)
  193 +// let sidStr = String(format: "%@%@", UserInfoManager.shared.userInfo.uid,dateStr)
  194 +// let signStr = sidStr.crypt(operation: CCOperation(kCCEncrypt), key: CNLiveMCEnvironmentManager.shared.appKey)
  195 +// //看是 appKey还是appKeywjj
  196 +// let sidSignStr = (signStr ?? "").isEmpty ? "" : signStr
  197 +// let sourceArray = str.components(separatedBy: "?")
  198 +// let buildVersion = Bundle.main.infoDictionary!["CFBundleVersion"] as! String
  199 +// let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String
  200 +// let uuid = CNLiveBusinessTools.getUidForStat(Date())
  201 +// if sourceArray.count == 1{
  202 +// //是wjjh5且无参数
  203 +// str = String(format: "%@?shareSid=%@&sid=%@&plat=i&ver=%@&version=%@&wjjFrom=apple&wjjUUID=%@&appId=%@&voteId=%@&wjjToken=%@", str,UserInfoManager.shared.userInfo.uid,UserInfoManager.shared.userInfo.uid,buildVersion,appVersion,uuid,CNLiveMCEnvironmentManager.shared.appId,sidSignStr!,UserInfoManager.shared.userInfo.token)
  204 +// return str
  205 +// }
  206 +// //是wjjh5且有参数
  207 +// let paraArr = NSMutableArray(array: ["shareSid=","sid=","plat=","ver=","version=","wjjFrom=","wjjUUID=","appId=","voteId=","wjjToken="])
  208 +// let valueArr = NSMutableArray(array:[UserInfoManager.shared.userInfo.uid,UserInfoManager.shared.userInfo.uid,"i",buildVersion,appVersion,"apple",uuid,CNLiveMCEnvironmentManager.shared.appId,sidSignStr!,UserInfoManager.shared.userInfo.token])
  209 +// var i = 0
  210 +// for paraStr in paraArr{
  211 +// let tempStr = paraStr as! String
  212 +// let paramStr = "&".appending(tempStr)
  213 +// let paramStr2 = "?".appending(tempStr)
  214 +//
  215 +// if str.contains(paramStr){
  216 +// //包含则替换 &sid=
  217 +// let lastStr = str.components(separatedBy: tempStr).last
  218 +// let lastSeparatedStr = (lastStr?.components(separatedBy: "&").first)!
  219 +// let oldStr = tempStr.appending(lastSeparatedStr)
  220 +// let tempValueStr = tempStr.appending(valueArr[i] as! String)
  221 +// str = str.replacingOccurrences(of: oldStr, with: tempValueStr)
  222 +// }else if str.contains(paramStr2){
  223 +// //包含则替换 &sid=
  224 +// let lastStr = str.components(separatedBy: tempStr).last
  225 +// let lastSeparatedStr = (lastStr?.components(separatedBy: "&").first)!
  226 +// let oldStr = tempStr.appending(lastSeparatedStr)
  227 +// let tempValueStr = tempStr.appending(valueArr[i] as! String)
  228 +// str = str.replacingOccurrences(of: oldStr, with: tempValueStr)
  229 +// }else{
  230 +// //不包含则拼接
  231 +// str = String(format: "%@&%@%@", str,tempStr,valueArr[i] as! String)
  232 +// }
  233 +// i = i + 1
  234 +// }
  235 +// return str
  236 +// }
225 237
226 // MARK: - BtnAction 238 // MARK: - BtnAction
227 // 内部链接右上角···分享 239 // 内部链接右上角···分享
@@ -229,83 +241,83 @@ class CNWebViewController:CNLiveBaseViewController ,WKNavigationDelegate{ @@ -229,83 +241,83 @@ class CNWebViewController:CNLiveBaseViewController ,WKNavigationDelegate{
229 self.configBridgeCallHander() 241 self.configBridgeCallHander()
230 } 242 }
231 override func ClickBackBtn() { 243 override func ClickBackBtn() {
232 - if self.webView.canGoBack{  
233 - self.webView.goBack() 244 + if self.webView.cnWebView.canGoBack{
  245 + self.webView.cnWebView.goBack()
234 }else{ 246 }else{
235 super.ClickBackBtn() 247 super.ClickBackBtn()
236 } 248 }
237 } 249 }
238 250
239 // MARK: - WKWebViewDelegate 251 // MARK: - WKWebViewDelegate
240 - // 页面开始加载时调用  
241 - func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {  
242 -// print("didStartProvisionalNavigation")  
243 - }  
244 - // 当内容开始返回时调用  
245 - func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {  
246 -// print("didCommit")  
247 - }  
248 -  
249 - // 页面加载完成之后调用  
250 - func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {  
251 -// print("didFinish")  
252 - titleName = webView.title!  
253 - }  
254 - // 页面加载失败时调用  
255 - func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {  
256 -// print("didFailProvisionalNavigation")  
257 - }  
258 - // 接收到服务器跳转请求之后调用  
259 - func webView(_ webView: WKWebView, didReceiveServerRedirectForProvisionalNavigation navigation: WKNavigation!) {  
260 -// print("didReceiveServerRedirectForProvisionalNavigation")  
261 - }  
262 - // 在收到响应后,决定是否跳转 -> 默认允许  
263 - func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {  
264 -  
265 -// print("decidePolicyFornavigationResponse")  
266 -  
267 - //允许跳转  
268 - decisionHandler(.allow)  
269 - //不允许跳转  
270 - // decisionHandler(.cancel)  
271 - }  
272 - // 在发送请求之前,决定是否跳转 -> 默认允许  
273 - func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {  
274 -// print("decidePolicyFornavigationAction")  
275 -  
276 - var urlStr = (navigationAction.request.url?.absoluteString)!  
277 -  
278 - if navigationAction.request.url?.host == WjjH5 {  
279 -  
280 - if urlStr.contains("&isWjjReport=true") || urlStr.contains("?isWjjReport=true"){  
281 - self.rightNavBtns = [self.moreNavBtn]  
282 - self.moreNavBtn.isHidden = false  
283 - }else{  
284 - self.moreNavBtn.isHidden = true  
285 - }  
286 -  
287 - urlStr = self.checkURLWithStr(urlStr: urlStr)  
288 - self.currentUrl = urlStr  
289 - }  
290 -  
291 - if navigationAction.navigationType == .other{  
292 - //跳转Appstore  
293 - let url = URL(string: "https://apps.apple.com/cn/app/%E7%BD%91%E5%AE%B6%E5%AE%B6%E5%95%86%E5%AE%B6%E7%89%88/id1337575497")  
294 - if url == navigationAction.request.url {  
295 - if UIApplication.shared.canOpenURL(url!) { UIApplication.shared.open(url!, options: [:], completionHandler: nil)  
296 - }  
297 - }  
298 - }else if navigationAction.navigationType == .linkActivated{  
299 -  
300 - //以后可判断h5地址 ,可跳转原生页面或网页  
301 - //暂时只跳h5  
302 - let webVC = CNWebViewController()  
303 - webVC.url = URL(string: urlStr)  
304 - navigationViewController().pushViewController(webVC, animated: pushAnimated)  
305 - decisionHandler(.cancel)  
306 - return  
307 -  
308 - }  
309 - decisionHandler(.allow)  
310 - } 252 +// // 页面开始加载时调用
  253 +// func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
  254 +//// print("didStartProvisionalNavigation")
  255 +// }
  256 +// // 当内容开始返回时调用
  257 +// func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
  258 +//// print("didCommit")
  259 +// }
  260 +//
  261 +// // 页面加载完成之后调用
  262 +// func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
  263 +//// print("didFinish")
  264 +// titleName = webView.title!
  265 +// }
  266 +// // 页面加载失败时调用
  267 +// func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
  268 +//// print("didFailProvisionalNavigation")
  269 +// }
  270 +// // 接收到服务器跳转请求之后调用
  271 +// func webView(_ webView: WKWebView, didReceiveServerRedirectForProvisionalNavigation navigation: WKNavigation!) {
  272 +//// print("didReceiveServerRedirectForProvisionalNavigation")
  273 +// }
  274 +// // 在收到响应后,决定是否跳转 -> 默认允许
  275 +// func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
  276 +//
  277 +//// print("decidePolicyFornavigationResponse")
  278 +//
  279 +// //允许跳转
  280 +// decisionHandler(.allow)
  281 +// //不允许跳转
  282 +// // decisionHandler(.cancel)
  283 +// }
  284 +// // 在发送请求之前,决定是否跳转 -> 默认允许
  285 +// func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
  286 +//// print("decidePolicyFornavigationAction")
  287 +//
  288 +// var urlStr = (navigationAction.request.url?.absoluteString)!
  289 +//
  290 +// if navigationAction.request.url?.host == WjjH5 {
  291 +//
  292 +// if urlStr.contains("&isWjjReport=true") || urlStr.contains("?isWjjReport=true"){
  293 +// self.rightNavBtns = [self.moreNavBtn]
  294 +// self.moreNavBtn.isHidden = false
  295 +// }else{
  296 +// self.moreNavBtn.isHidden = true
  297 +// }
  298 +//
  299 +// urlStr = self.checkURLWithStr(urlStr: urlStr)
  300 +// self.currentUrl = urlStr
  301 +// }
  302 +//
  303 +// if navigationAction.navigationType == .other{
  304 +// //跳转Appstore
  305 +// let url = URL(string: "https://apps.apple.com/cn/app/%E7%BD%91%E5%AE%B6%E5%AE%B6%E5%95%86%E5%AE%B6%E7%89%88/id1337575497")
  306 +// if url == navigationAction.request.url {
  307 +// if UIApplication.shared.canOpenURL(url!) { UIApplication.shared.open(url!, options: [:], completionHandler: nil)
  308 +// }
  309 +// }
  310 +// }else if navigationAction.navigationType == .linkActivated{
  311 +//
  312 +// //以后可判断h5地址 ,可跳转原生页面或网页
  313 +// //暂时只跳h5
  314 +// let webVC = CNWebViewController()
  315 +// webVC.url = URL(string: urlStr)
  316 +// navigationViewController().pushViewController(webVC, animated: pushAnimated)
  317 +// decisionHandler(.cancel)
  318 +// return
  319 +//
  320 +// }
  321 +// decisionHandler(.allow)
  322 +// }
311 } 323 }