Files
uniapp-im-shop/uni_modules/tuikit-atomic-x/utssdk/app-ios/swift/ExperimentalApiInvoker.swift
2026-01-12 17:52:15 +08:00

57 lines
2.0 KiB
Swift

import DCloudUTSFoundation
import RTCRoomEngine
class ExperimentalApiInvoker {
public static let shared = ExperimentalApiInvoker()
private let jsonDecoder = JSONDecoder()
// const data = { "api": "setTestEnvironment", "params": { "enableRoomTestEnv": true } } // IM
// const data = { "api": "setLocalVideoMuteImage", "params": { "image": "filePath" } } //
// const giftData = { "api": "setCurrentLanguage", "params": { "language" : "en"} } //
public func callExperimentalAPI(
_ jsonString: String, callback: @escaping TUIExperimentalAPIResponseBlock
) {
guard let data = jsonString.data(using: .utf8) else {
callback("Invalid JSON string")
return
}
do {
let requestData = try jsonDecoder.decode(RequestData.self, from: data)
if requestData.api == "setLocalVideoMuteImage" {
setLocalVideoMuteImage(data: requestData, callback: callback)
return
}
TUIRoomEngine.sharedInstance().callExperimentalAPI(
jsonStr: jsonString, callback: callback)
} catch {
callback("JSON parsing error")
}
}
private func setLocalVideoMuteImage(
data: RequestData, callback: @escaping TUIExperimentalAPIResponseBlock
) {
guard let filePath = data.params?.image, !filePath.isEmpty else {
callback("setLocalVideoMuteImage: filePath is empty")
return
}
do {
let image = UIImage(contentsOfFile: filePath)
TUIRoomEngine.sharedInstance().setLocalVideoMuteImage(image: image)
} catch {
callback("setLocalVideoMuteImage: unexpected error")
}
}
}
struct RequestData: Codable {
let api: String
let params: Params?
}
// ,
struct Params: Codable {
let image: String?
}