PublishPlatformView.swift 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. //
  2. // PublishPlatformView.swift
  3. // daniulive
  4. //
  5. // Created by vinno on 2023/6/19.
  6. //
  7. import Flutter
  8. public class PublishPlatformViewFactory: NSObject, FlutterPlatformViewFactory {
  9. public static let SIGN = "daniuLivePublishChannelView"
  10. private var message: FlutterBinaryMessenger
  11. init(message: FlutterBinaryMessenger) {
  12. self.message = message
  13. }
  14. public func create(withFrame frame: CGRect, viewIdentifier viewId: Int64, arguments args: Any?) -> FlutterPlatformView {
  15. let view = PublishPlatformView(frame, message, viewId)
  16. return view
  17. }
  18. }
  19. public class PublishPlatformView: NSObject, FlutterPlatformView {
  20. private let renderView: UIView
  21. private let frame: CGRect
  22. private let channel: FlutterMethodChannel
  23. private let publishManager: IPublishManager?
  24. init(_ frame: CGRect, _ messager: FlutterBinaryMessenger, _ viewId: Int64) {
  25. self.frame = frame
  26. self.renderView = PublishRenderView()
  27. self.channel = FlutterMethodChannel(name: "\(PublishPlatformViewFactory.SIGN)_\(viewId)", binaryMessenger: messager)
  28. self.publishManager = ManagerCenter.get(IPublishManager.self)
  29. super.init()
  30. self.channel.setMethodCallHandler(handle)
  31. }
  32. public func view() -> UIView {
  33. return renderView
  34. }
  35. public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
  36. defer {
  37. CommonUtils.logFlutterMethodCall(call)
  38. }
  39. switch call.method {
  40. case "mount":
  41. self.mount(call, result)
  42. case "muteVideo":
  43. self.muteVideo(call, result)
  44. case "muteAudio":
  45. self.muteAudio(call, result)
  46. case "setVolume":
  47. self.setVolume(call, result)
  48. default:
  49. CommonUtils.logError(call: call, errCode: -1, errMsg: "method not Implemented")
  50. result(FlutterMethodNotImplemented)
  51. }
  52. }
  53. private func mount(_ call: FlutterMethodCall, _ result: @escaping FlutterResult) {
  54. publishManager?.setView(renderView)
  55. result(nil)
  56. }
  57. private func muteVideo(_ call: FlutterMethodCall, _ result: @escaping FlutterResult) {
  58. let isMute = CommonUtils.getParamByKey(call, result, "isMute") as! Bool
  59. publishManager?.muteVideo(isMute)
  60. result(nil)
  61. }
  62. private func muteAudio(_ call: FlutterMethodCall, _ result: @escaping FlutterResult) {
  63. let isMute = CommonUtils.getParamByKey(call, result, "isMute") as! Bool
  64. publishManager?.muteAudio(isMute)
  65. result(nil)
  66. }
  67. private func setVolume(_ call: FlutterMethodCall, _ result: @escaping FlutterResult) {
  68. let volume = CommonUtils.getParamByKey(call, result, "volume") as! Int
  69. publishManager?.setVolume(volume)
  70. result(nil)
  71. }
  72. }