CNHomeWebViewController.swift 4.79 KB
//
//  CNHomeWebViewController.swift
//  metaCode
//
//  Created by zx on 2023/9/21.
//  首页

import Foundation
import WebKit
import WebViewJavascriptBridge
import CNLiveShareToolKit
import CommonCrypto
import CNLiveBusinessTools
import SKPhotoBrowser

class CNHomeWebViewController: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, KNavigationHeight, Width, Height-KNavigationHeight-KTabBarHeight), configuration: configuration, url: _url)
        webView.cnWebView.scrollView.showsVerticalScrollIndicator = false
        webView.cnWebView.scrollView.showsHorizontalScrollIndicator = false
        webView.isCNWebController = true
        return webView
    }()
    
    var _url:URL?
    var url:URL? {
        get{
            return _url
        }
        set{
            _url = newValue!
        }
    }
    
    deinit {
        self.webView.cnWebView.stopLoading()
        self.webView.cnWebView.navigationDelegate = nil
        self.webView.cnWebView.uiDelegate = nil
        self.webView.webViewRemoveScriptMessageHandler()
        print("WKWebView dealloc")
    }
    
    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
        self.h5StopVideoPlayer()
    }
    override func viewWillLayoutSubviews() {
        super.viewWillLayoutSubviews()
        homeTopNavView.frame = CGRect(x: 0, y: 0, width: view.width, height:topNavViewHeight)// topNavViewHeight +  get_system_statusBar_height())
        let lrSpace = 0.0
        homeTitleLabel.frame = CGRect(x: CGFloat(Int(lrSpace)) , y: topNavViewHeight - get_system_nav_ui_height() - topNavViewSubUIContentOffsetY, width: topNavView.width - (lrSpace * 2), height: get_system_nav_ui_height())
        homeTopLine.frame = CGRect(x: 0, y: topNavViewHeight - 1, width: topNavView.width, height: 1)
    }
    
    public lazy var homeTopNavView: UIView = {
        let topNavView = UIView.init(frame: CGRect(x: 0, y: 0, width: view.width, height: topNavViewHeight))
        topNavView.backgroundColor = HexColor("#F7F8FA")
        return topNavView
    }()
    
    public lazy var homeTitleLabel: UILabel = {
        let titleLabel = UILabel.init(frame: CGRectMake(0, topNavView.height - get_system_nav_ui_height(), topNavView.frame.size.width, get_system_nav_ui_height()))
        titleLabel.textColor = HexColor("#333333")
        titleLabel.font = Font_18_Fit
        titleLabel.textAlignment = .center
        titleLabel.text = "AI 智能体"
        return titleLabel
    }()
    
    public lazy var homeTopLine: UIImageView = {
        let topLine = UIImageView.init(frame: CGRect(x: 0, y: topNavView.height - 1, width: view.width, height: 1))
        topLine.backgroundColor = .clear
        return topLine
    }()
    override func viewDidLoad() {
        super.viewDidLoad()
        navigationBarHidden = true
        
        self.topNavViewHeight = get_system_nav_height()
        view.addSubview(homeTopNavView)
        homeTopNavView.addSubview(homeTitleLabel)
        homeTopNavView.addSubview(homeTopLine)

        self.view.addSubview(self.webView)
        self.webView.webControllerUpdateNavBlock = { [weak self] isFinish , title,isDecidePolicy ,urlStr in
            if isFinish{
            }else if isDecidePolicy{
            }
        }
        self.webView.webControllerBackNavBlock = { [weak self] in
            self?.navigationController?.popViewController(animated: true)
        }
        self.webView.webControllerUpdateCurrentUrlBlock = { [weak self] currentUrlStr in
            self!.currentUrl = currentUrlStr
        }
        self.webView.snp.makeConstraints { make in
            make.top.equalTo(get_system_nav_height())
            make.left.right.bottom.equalToSuperview()
        }
        
        let webVC =  CNWebViewController()
        webVC.url = URL(string: "https://wjjh5.cnlive.com/chatgpt/#/pages/index/index?id=1836691195091464194")
        navigationViewController().pushViewController(webVC, animated: true)
    }

    func h5StopVideoPlayer(){
        // call h5停止播放视频
        let data: [String: Any] = ["stop": true]
        self.bridge?.callHandler("wjjStopVideoPlayer", data: data, responseCallback: { responseData in
            print("wjjStopVideoPlayer:\(responseData ?? "")")
        })
    }
    
}