MoviaBox/Thimra/Base/WebView/SPWebViewController+ScriptMessage.swift
2025-04-25 17:00:24 +08:00

68 lines
2.2 KiB
Swift

//
// 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)
}
}