// // SPWebViewController+ScriptMessage.swift // Thimra // // Created by Overseas on 2025/4/24. // import UIKit import WebKit typealias SPWebViewMessageName = String ///APP交互 let WebMessageAPP: SPWebViewMessageName = "js2app" ///打开反馈列表 let WebMessageOpenFeedbackList: SPWebViewMessageName = "openFeedbackList" ///打开反馈详情 let WebMessageOpenFeedbackDetail: SPWebViewMessageName = "openFeedbackDetail" ///打开相册 let WebMessageOpenPhotoPicker: SPWebViewMessageName = "openPhotoPicker" extension SPWebViewController { func _webViewUserContentController(didReceive message: WKScriptMessage) { let name = message.name let body = message.body spLog(message: body) if name == WebMessageOpenFeedbackList { let vc = SPCampaignWebViewController() vc.urlStr = SPFeedBackListWebUrl self.navigationController?.pushViewController(vc, animated: true) } else if name == WebMessageOpenFeedbackDetail { guard let body = message.body as? [String : Any] else { return } guard let id = body["id"] as? Int else { return } let vc = SPCampaignWebViewController() vc.id = "\(id)" vc.urlStr = SPFeedBackDetailWebUrl self.navigationController?.pushViewController(vc, animated: true) } else if name == WebMessageOpenPhotoPicker { let vc = SPImagePickerManager.createImagePicker(delegate: self) self.present(vc, animated: true) } } } //MARK: -------------- TZImagePickerControllerDelegate -------------- extension SPWebViewController: TZImagePickerControllerDelegate { func imagePickerController(_ picker: TZImagePickerController!, didFinishPickingPhotos photos: [UIImage]!, sourceAssets assets: [Any]!, isSelectOriginalPhoto: Bool) { guard let image = photos.first else { return } guard let imageData = image.jpegData(compressionQuality: 0.8) else { return } let imageDataStr = imageData.base64EncodedString(options: .endLineWithCarriageReturn) let js = "uploadConvertImage('\(imageDataStr)')" self.webView.evaluateJavaScript(js) } }