111 lines
3.8 KiB
Swift
111 lines
3.8 KiB
Swift
//
|
|
// FABaseWebViewController+Script.swift
|
|
// Fableon
|
|
//
|
|
// Created by 湖北秦九 on 2025/10/22.
|
|
//
|
|
|
|
import UIKit
|
|
import WebKit
|
|
import ZLPhotoBrowser
|
|
import SmartCodable
|
|
|
|
///APP交互
|
|
let kFAWebMessageAPP = "js2app"
|
|
///打开反馈列表
|
|
let kFAWebMessageOpenFeedbackList = "openFeedbackList"
|
|
///打开反馈详情
|
|
let kFAWebMessageOpenFeedbackDetail = "openFeedbackDetail"
|
|
///打开相册
|
|
let kFAWebMessageOpenPhotoPicker = "openPhotoPicker"
|
|
///删除账号成功
|
|
let kFAWebMessageAccountDeletionFinish = "accountLogout"
|
|
|
|
extension FABaseWebViewController {
|
|
|
|
func fa_webViewUserContentController(didReceive message: WKScriptMessage) {
|
|
let name = message.name
|
|
let body = message.body
|
|
|
|
switch name {
|
|
case kFAWebMessageOpenFeedbackList:
|
|
let vc = FAAppWebViewController()
|
|
vc.webUrl = kFAFeedBackListWebUrl
|
|
self.navigationController?.pushViewController(vc, animated: true)
|
|
|
|
case kFAWebMessageOpenFeedbackDetail:
|
|
guard let body = body as? [String : Any] else { return }
|
|
guard let id = body["id"] as? Int else { return }
|
|
|
|
let vc = FAAppWebViewController()
|
|
vc.id = "\(id)"
|
|
vc.webUrl = kFAFeedBackDetailWebUrl
|
|
self.navigationController?.pushViewController(vc, animated: true)
|
|
|
|
case kFAWebMessageOpenPhotoPicker:
|
|
openPhotoPicker()
|
|
|
|
case kFAWebMessageAPP:
|
|
guard let body = message.body as? [String : Any] else { return }
|
|
guard let model = FAWebMessageModel.deserialize(from: body) else { return }
|
|
let type = model.type
|
|
let data = model.data
|
|
|
|
if type == "login" {
|
|
let view = FALoginView()
|
|
view.present(in: nil)
|
|
|
|
} else if type == "open_notify" {
|
|
// openNotify()
|
|
|
|
} else if type == "watch_video" {
|
|
let vc = FAPlayerDetailViewController()
|
|
vc.shortPlayId = data?.short_play_id
|
|
vc.activityId = data?.activity_id
|
|
self.navigationController?.pushViewController(vc, animated: true)
|
|
} else {
|
|
|
|
guard let urlStr = data?.link else { return }
|
|
guard let url = URL(string: urlStr) else { return }
|
|
if UIApplication.shared.canOpenURL(url) {
|
|
UIApplication.shared.open(url)
|
|
}
|
|
}
|
|
|
|
case kFAWebMessageAccountDeletionFinish:
|
|
self.navigationController?.popToRootViewController(animated: true)
|
|
|
|
|
|
default:
|
|
break
|
|
}
|
|
|
|
}
|
|
|
|
|
|
///打开相册
|
|
private func openPhotoPicker() {
|
|
|
|
ZLPhotoConfiguration.default().allowSelectOriginal = false
|
|
ZLPhotoConfiguration.default().maxSelectCount = 1
|
|
ZLPhotoConfiguration.default().allowEditImage = false
|
|
ZLPhotoConfiguration.default().allowSelectVideo = false
|
|
ZLPhotoConfiguration.default().allowSelectGif = false
|
|
ZLPhotoConfiguration.default().allowTakePhotoInLibrary = false
|
|
|
|
let picker = ZLPhotoPicker()
|
|
picker.selectImageBlock = { [weak self] (results, _) in
|
|
guard let self = self else { return }
|
|
guard let image = results.first?.image 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)
|
|
}
|
|
|
|
picker.showPhotoLibrary(sender: self)
|
|
}
|
|
|
|
}
|