1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- //
- // PublishPlatformView.swift
- // daniulive
- //
- // Created by vinno on 2023/6/19.
- //
- import Flutter
- public class PublishPlatformViewFactory: NSObject, FlutterPlatformViewFactory {
- public static let SIGN = "daniuLivePublishChannelView"
- private var message: FlutterBinaryMessenger
-
- init(message: FlutterBinaryMessenger) {
- self.message = message
- }
-
- public func create(withFrame frame: CGRect, viewIdentifier viewId: Int64, arguments args: Any?) -> FlutterPlatformView {
- let view = PublishPlatformView(frame, message, viewId)
-
- return view
- }
- }
- public class PublishPlatformView: NSObject, FlutterPlatformView {
- private let renderView: UIView
- private let frame: CGRect
- private let channel: FlutterMethodChannel
- private let publishManager: IPublishManager?
-
- init(_ frame: CGRect, _ messager: FlutterBinaryMessenger, _ viewId: Int64) {
- self.frame = frame
- self.renderView = PublishRenderView()
- self.channel = FlutterMethodChannel(name: "\(PublishPlatformViewFactory.SIGN)_\(viewId)", binaryMessenger: messager)
- self.publishManager = ManagerCenter.get(IPublishManager.self)
- super.init()
- self.channel.setMethodCallHandler(handle)
- }
-
- public func view() -> UIView {
- return renderView
- }
-
- public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
- defer {
- CommonUtils.logFlutterMethodCall(call)
- }
-
- switch call.method {
- case "mount":
- self.mount(call, result)
- case "muteVideo":
- self.muteVideo(call, result)
- case "muteAudio":
- self.muteAudio(call, result)
- case "setVolume":
- self.setVolume(call, result)
- default:
- CommonUtils.logError(call: call, errCode: -1, errMsg: "method not Implemented")
- result(FlutterMethodNotImplemented)
- }
- }
-
- private func mount(_ call: FlutterMethodCall, _ result: @escaping FlutterResult) {
- publishManager?.setView(renderView)
- result(nil)
- }
-
- private func muteVideo(_ call: FlutterMethodCall, _ result: @escaping FlutterResult) {
- let isMute = CommonUtils.getParamByKey(call, result, "isMute") as! Bool
- publishManager?.muteVideo(isMute)
- result(nil)
- }
-
- private func muteAudio(_ call: FlutterMethodCall, _ result: @escaping FlutterResult) {
- let isMute = CommonUtils.getParamByKey(call, result, "isMute") as! Bool
- publishManager?.muteAudio(isMute)
- result(nil)
- }
-
- private func setVolume(_ call: FlutterMethodCall, _ result: @escaping FlutterResult) {
- let volume = CommonUtils.getParamByKey(call, result, "volume") as! Int
- publishManager?.setVolume(volume)
- result(nil)
- }
- }
|