116 lines
4.0 KiB
Swift
116 lines
4.0 KiB
Swift
//
|
|
// SPWebViewController+ScriptMessage.swift
|
|
// MoviaBox
|
|
//
|
|
// 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)
|
|
|
|
} else if name == WebMessageAPP {
|
|
guard let body = message.body as? [String : Any] else { return }
|
|
guard let model = SPWebMessageModel.deserialize(from: body) else { return }
|
|
let type = model.type
|
|
let data = model.data
|
|
|
|
if type == "login" {//登录
|
|
SPLoginManager.manager.openLoginVC()
|
|
|
|
} else if type == "open_notify" {//打开通知
|
|
openNotify()
|
|
|
|
} else if type == "watch_video" { //去看剧
|
|
|
|
let vc = SPPlayerDetailViewController()
|
|
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)
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
extension SPWebViewController {
|
|
///打开系统通知
|
|
func openNotify() {
|
|
UNUserNotificationCenter.current().getNotificationSettings { settings in
|
|
DispatchQueue.main.async { [weak self] in
|
|
guard let self = self else { return }
|
|
if settings.authorizationStatus != .authorized {//未开启通知打开设置
|
|
SPAPPTool.openApnsSetting()
|
|
} else {//开启通知上报结果
|
|
SPRewardsAPI.requestUploadOpenNotify(completer: nil)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
//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)
|
|
|
|
}
|
|
|
|
}
|