BeeReel/BeeReel/Base/WebView/BRAppWebViewController.swift
2025-07-28 19:36:03 +08:00

89 lines
2.4 KiB
Swift

//
// BRAppWebViewController.swift
// BeeReel
//
// Created by 鸿 on 2025/7/28.
//
import UIKit
class BRAppWebViewController: BRWebViewController {
var id: String?
private var receiveDataCount = 0
var theme: String? = "theme_2"
override func viewDidLoad() {
super.viewDidLoad()
autoTitle = false
if webUrl == kBRFeedBackListWebUrl {
self.title = "Feedback History".localized
} else if webUrl == kBRFeedBackHomeWebUrl {
self.title = "Feedback".localized
} else if webUrl == kBRFeedBackDetailWebUrl {
self.title = "Feedback Details".localized
} else if webUrl == kBRRewardsWebUrl {
self.title = "Rewards".localized
}
self.webView.scrollView.br_addRefreshHeader { [weak self] in
self?.handleHeaderRefresh(nil)
}
}
override func handleHeaderRefresh(_ completer: (() -> Void)?) {
self.reload()
self.webView.scrollView.br_endHeaderRefreshing()
}
override func br_webViewDidFinishLoad(_ webView: BRWebView) {
super.br_webViewDidFinishLoad(webView)
receiveDataCount = 0
receiveDataFromNative()
}
}
extension BRAppWebViewController {
///
func receiveDataFromNative() {
receiveDataCount += 1
if receiveDataCount > 10 { return }
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { [weak self] in
guard let self = self else { return }
var dic = [
"token" : BRLoginManager.manager.token?.token ?? "",
"time_zone" : BRNetworkTarget.timeZone(),
"lang" : BRLocalizedManager.manager.currentLocalizedKey,
"type" : "ios",
]
if let theme = theme {
dic["theme"] = theme
}
if let id = id {
dic["id"] = id
}
if let json = dic.toJsonString() {
let js = "receiveDataFromNative(\(json))"
self.webView.evaluateJavaScript(js) { [weak self] _, error in
guard let self = self else { return }
if error != nil {
self.receiveDataFromNative()
}
}
}
}
}
}