CNWebViewController.swift
4.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
//
// CNWebViewController.swift
// metaCode
//
// Created by zx on 2023/9/21.
//
import Foundation
import WebKit
import WebViewJavascriptBridge
import CNLiveShareToolKit
import CommonCrypto
import CNLiveBusinessTools
import SKPhotoBrowser
let WjjH5 = "wjjh5.cnlive.com"
let ManageshopH5 = "manageshop.cnlive.com"
class CNWebViewController:CNLiveBaseViewController ,WKNavigationDelegate{
var bridge:WKWebViewJavascriptBridge?
var currentUrl:String = ""//当前网页的url
lazy var webView: CNWebView = {
let configuration = WKWebViewConfiguration()
configuration.allowsInlineMediaPlayback = true
let preferences = WKPreferences()
preferences.javaScriptCanOpenWindowsAutomatically = true
preferences.javaScriptEnabled = true
configuration.preferences.minimumFontSize = 0.0
configuration.preferences = preferences
configuration.userContentController = WKUserContentController()
let webView = CNWebView(frame: CGRectMake(0, 0, Width, Height), configuration: configuration, url: _url)
webView.cnWebView.scrollView.showsVerticalScrollIndicator = false
webView.cnWebView.scrollView.showsHorizontalScrollIndicator = false
webView.isCNWebController = true
return webView
}()
lazy var moreNavBtn: UIButton = {
let moreNavBtn = UIButton(type: .custom)
moreNavBtn.frame = CGRect(x: 0, y: KStatusBarHeight, width: KNavigationHeight-KStatusBarHeight, height: KNavigationHeight-KStatusBarHeight)
moreNavBtn.backgroundColor = .clear
moreNavBtn.setImage(UIImage(named: "web_more"), for: .normal)
moreNavBtn.addTarget(self, action: #selector(moreNavBtnAction), for: .touchUpInside)
return moreNavBtn
}()
var _url:URL?
var url:URL? {
get{
return _url
}
set{
_url = newValue!
}
}
override func viewDidLoad() {
super.viewDidLoad()
navigationBarHidden = false
self.view.addSubview(self.webView)
self.webView.webControllerUpdateNavBlock = { isFinish , title,isDecidePolicy ,urlStr in
if isFinish{
self.titleName = title
}else if isDecidePolicy{
if urlStr.contains("&isWjjReport=true") || urlStr.contains("?isWjjReport=true"){
self.rightNavBtns = [self.moreNavBtn]
self.moreNavBtn.isHidden = false
}else{
self.moreNavBtn.isHidden = true
}
}
}
webView.snp.makeConstraints { make in
make.top.equalTo(get_system_nav_height())
make.left.right.bottom.equalToSuperview()
}
}
//点击...分享获取h5参数oc call js
func configBridgeCallHander() -> Void {
self.webView.bridge?.callHandler("wjjClientGetShareParaFromJS", data: ["":""], responseCallback: { data in
// print("js call oc\(data)")
let dic = data as! Dictionary<String, String>
let title = dic["title"]
let desc = dic["desc"]
let shareImg = dic["shareImg"]
var shareUrl = ""
if let tempShareUrl = dic["shareUrl"]{
if tempShareUrl == ""{
shareUrl = self.currentUrl
}else{
shareUrl = tempShareUrl
}
}else{
shareUrl = self.currentUrl
}
CNLiveShareManager.showShareViewWithParam(forShareTitle: title, shareUrl: shareUrl, shareDesc: desc, shareImage: shareImg, screenFull: false, hiddenWjj: true, hiddenQQ: false, hiddenWB: true, hiddenLifeCircle: true, hiddenWechatCircle: false, hiddenWechat: false, hiddenSafari: true, formVC: self, topImage: [], topTitles: [], platformType: .all) { title in
} completerBlock: { resultType, platformType, typeString in
if resultType == .succ{
}
}
})
}
// MARK: - 内部链接右上角···分享
@objc func moreNavBtnAction(){
self.configBridgeCallHander()
}
override func ClickBackBtn() {
if self.webView.cnWebView.canGoBack{
self.webView.cnWebView.goBack()
}else{
super.ClickBackBtn()
}
}
}