Commit f712ca8f by Sai Sebastian
parents ebbf4aea c0cafc3b
...@@ -49,7 +49,7 @@ Future<void> checkAndDownloadSDK(String location) async { ...@@ -49,7 +49,7 @@ Future<void> checkAndDownloadSDK(String location) async {
if (!exists) { if (!exists) {
await downloadFile( await downloadFile(
Uri.parse('https://www.dropbox.com/s/a5vfh2m543t15k8/MobileRTC?dl=1'), Uri.parse('https://drive.google.com/uc?export=download&id=1PVPXEOUD4cjS_gy5cnWAQkqQA1mza0hh'),
iosSDKFile); iosSDKFile);
} }
...@@ -59,7 +59,7 @@ Future<void> checkAndDownloadSDK(String location) async { ...@@ -59,7 +59,7 @@ Future<void> checkAndDownloadSDK(String location) async {
if (!exists) { if (!exists) {
await downloadFile( await downloadFile(
Uri.parse('https://www.dropbox.com/s/alk03qxiolurxf8/MobileRTC?dl=1'), Uri.parse('https://drive.google.com/uc?export=download&id=1F4Yg4fqjf9wkYUkLtNEUorjd5CUb7_Pp'),
iosSimulateSDKFile); iosSimulateSDKFile);
} }
......
...@@ -2,426 +2,425 @@ import Flutter ...@@ -2,426 +2,425 @@ import Flutter
import UIKit import UIKit
import MobileRTC import MobileRTC
publicclass SwiftFlutterZoomSdkPlugin: NSObject, FlutterPlugin,FlutterStreamHandler , MobileRTCMeetingServiceDelegate { public class SwiftFlutterZoomSdkPlugin: NSObject, FlutterPlugin,FlutterStreamHandler , MobileRTCMeetingServiceDelegate {
var authenticationDelegate: AuthenticationDelegate var authenticationDelegate: AuthenticationDelegate
var eventSink: FlutterEventSink? var eventSink: FlutterEventSink?
publicstaticfunc register(with registrar: FlutterPluginRegistrar) { public static func register(with registrar: FlutterPluginRegistrar) {
let messenger = registrar.messenger() let messenger = registrar.messenger()
let channel = FlutterMethodChannel(name: "com.evilratt/zoom_sdk", binaryMessenger: messenger) let channel = FlutterMethodChannel(name: "com.evilratt/zoom_sdk", binaryMessenger: messenger)
let instance = SwiftFlutterZoomSdkPlugin() let instance = SwiftFlutterZoomSdkPlugin()
    registrar.addMethodCallDelegate(instance, channel: channel) registrar.addMethodCallDelegate(instance, channel: channel)
let eventChannel = FlutterEventChannel(name: "com.evilratt/zoom_sdk_event_stream", binaryMessenger: messenger) let eventChannel = FlutterEventChannel(name: "com.evilratt/zoom_sdk_event_stream", binaryMessenger: messenger)
    eventChannel.setStreamHandler(instance) eventChannel.setStreamHandler(instance)
  } }
overrideinit(){ override init(){
      authenticationDelegate = AuthenticationDelegate() authenticationDelegate = AuthenticationDelegate()
  } }
publicfunc handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) { public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
switch call.method { switch call.method {
case "init": case "init":
self.initZoom(call: call, result: result) self.initZoom(call: call, result: result)
case "login": case "login":
self.login(call: call, result: result) self.login(call: call, result: result)
case "join": case "join":
self.joinMeeting(call: call, result: result) self.joinMeeting(call: call, result: result)
case "startNormal": case "startNormal":
self.startMeetingNormal(call: call, result: result) self.startMeetingNormal(call: call, result: result)
case "meeting_status": case "meeting_status":
self.meetingStatus(call: call, result: result) self.meetingStatus(call: call, result: result)
case "meeting_details": case "meeting_details":
self.meetingDetails(call: call, result: result) self.meetingDetails(call: call, result: result)
default: default:
              result(FlutterMethodNotImplemented) result(FlutterMethodNotImplemented)
          } }
  } }
publicfunc onMethodCall(call: FlutterMethodCall, result: @escaping FlutterResult) { public func onMethodCall(call: FlutterMethodCall, result: @escaping FlutterResult) {
switch call.method { switch call.method {
case "init": case "init":
self.initZoom(call: call, result: result) self.initZoom(call: call, result: result)
case "login": case "login":
self.login(call: call, result: result) self.login(call: call, result: result)
case "join": case "join":
self.joinMeeting(call: call, result: result) self.joinMeeting(call: call, result: result)
case "start": case "start":
self.startMeetingNormal(call: call, result: result) self.startMeetingNormal(call: call, result: result)
case "meeting_status": case "meeting_status":
self.meetingStatus(call: call, result: result) self.meetingStatus(call: call, result: result)
case "meeting_details": case "meeting_details":
self.meetingDetails(call: call, result: result) self.meetingDetails(call: call, result: result)
default: default:
              result(FlutterMethodNotImplemented) result(FlutterMethodNotImplemented)
          } }
      } }
        //Initializing the Zoom SDK for iOS //Initializing the Zoom SDK for iOS
publicfunc initZoom(call: FlutterMethodCall, result: @escaping FlutterResult)  { public func initZoom(call: FlutterMethodCall, result: @escaping FlutterResult) {
let pluginBundle = Bundle(for: type(of: self)) let pluginBundle = Bundle(for: type(of: self))
let pluginBundlePath = pluginBundle.bundlePath let pluginBundlePath = pluginBundle.bundlePath
let arguments = call.arguments as! Dictionary<String, String> let arguments = call.arguments as! Dictionary<String, String>
let context = MobileRTCSDKInitContext() let context = MobileRTCSDKInitContext()
            context.domain = arguments["domain"]! context.domain = arguments["domain"]!
            context.enableLog = true context.enableLog = true
            context.bundleResPath = pluginBundlePath context.bundleResPath = pluginBundlePath
            MobileRTC.shared().initialize(context) MobileRTC.shared().initialize(context)
let auth = MobileRTC.shared().getAuthService() let auth = MobileRTC.shared().getAuthService()
            auth?.delegate = self.authenticationDelegate.onAuth(result) auth?.delegate = self.authenticationDelegate.onAuth(result)
iflet appKey = arguments["appKey"] { if let appKey = arguments["appKey"] {
                auth?.clientKey = appKey auth?.clientKey = appKey
            } }
iflet appSecret = arguments["appSecret"] { if let appSecret = arguments["appSecret"] {
                auth?.clientSecret = appSecret auth?.clientSecret = appSecret
            } }
            auth?.sdkAuth() auth?.sdkAuth()
        } }
        //Perform start meeting function with logging in to the zoom account //Perform start meeting function with logging in to the zoom account
publicfunc login(call: FlutterMethodCall, result: @escaping FlutterResult) { public func login(call: FlutterMethodCall, result: @escaping FlutterResult) {
let authService = MobileRTC.shared().getAuthService() let authService = MobileRTC.shared().getAuthService()
if ((authService?.isLoggedIn()) == true) { if ((authService?.isLoggedIn()) == true) {
self.startMeeting(call:call, result:result); self.startMeeting(call:call, result:result);
              }else{ }else{
let arguments = call.arguments as! Dictionary<String, String?> let arguments = call.arguments as! Dictionary<String, String?>
//                  authService? authService?.login(withEmail: arguments["userId"]!!, password: arguments["userPassword"]!!, rememberMe: false)
//                      .login(withEmail: arguments["userId"]!!, password: arguments["userPassword"]!!, rememberMe: false) if ((authService?.isLoggedIn()) == true) {
if ((authService?.isLoggedIn()) == true) { self.startMeeting(call:call, result:result);
self.startMeeting(call:call, result:result); }
                  } }
              } }
        }
//Perform start meeting function with logging in to the zoom account (Only for passed meeting id)
        //Perform start meeting function with logging in to the zoom account (Only for passed meeting id) public func startMeetingNormal(call: FlutterMethodCall, result: @escaping FlutterResult) {
publicfunc startMeetingNormal(call: FlutterMethodCall, result: @escaping FlutterResult) { let authService = MobileRTC.shared().getAuthService()
let authService = MobileRTC.shared().getAuthService()
if ((authService?.isLoggedIn()) == true) {
if ((authService?.isLoggedIn()) == true) { self.startMeetingNormalInternal(call:call, result:result);
self.startMeetingNormalInternal(call:call, result:result); }else{
                }else{ let arguments = call.arguments as! Dictionary<String, String?>
let arguments = call.arguments as! Dictionary<String, String?> authService?.login(withEmail: arguments["userId"]!!, password: arguments["userPassword"]!!, rememberMe: false)
                   // authService?.login(withEmail: arguments["userId"]!!, password: arguments["userPassword"]!!, rememberMe: false) if ((authService?.isLoggedIn()) == true) {
if ((authService?.isLoggedIn()) == true) { self.startMeetingNormalInternal(call:call, result:result);
self.startMeetingNormalInternal(call:call, result:result); }
                    } }
                } }
        }
//Listen to meeting status on joinning and starting the mmeting
        //Listen to meeting status on joinning and starting the mmeting public func meetingStatus(call: FlutterMethodCall, result: FlutterResult) {
publicfunc meetingStatus(call: FlutterMethodCall, result: FlutterResult) {
let meetingService = MobileRTC.shared().getMeetingService()
let meetingService = MobileRTC.shared().getMeetingService() if meetingService != nil {
if meetingService != nil { let meetingState = meetingService?.getMeetingState()
let meetingState = meetingService?.getMeetingState() result(getStateMessage(meetingState))
                result(getStateMessage(meetingState)) } else {
            } else { result(["MEETING_STATUS_UNKNOWN", ""])
                result(["MEETING_STATUS_UNKNOWN", ""]) }
            } }
       }
//Get Meeting Details Programmatically after Starting the Meeting
        //Get Meeting Details Programmatically after Starting the Meeting public func meetingDetails(call: FlutterMethodCall, result: FlutterResult) {
publicfunc meetingDetails(call: FlutterMethodCall, result: FlutterResult) {
let meetingService = MobileRTC.shared().getMeetingService()
let meetingService = MobileRTC.shared().getMeetingService() if meetingService != nil {
if meetingService != nil { let meetingPassword = MobileRTCInviteHelper.sharedInstance().rawMeetingPassword
let meetingPassword = MobileRTCInviteHelper.sharedInstance().rawMeetingPassword let meetingNumber = MobileRTCInviteHelper.sharedInstance().ongoingMeetingNumber
let meetingNumber = MobileRTCInviteHelper.sharedInstance().ongoingMeetingNumber
result([meetingNumber, meetingPassword])
                result([meetingNumber, meetingPassword])
} else {
            } else { result(["MEETING_STATUS_UNKNOWN", "No status available"])
                result(["MEETING_STATUS_UNKNOWN", "No status available"]) }
            } }
        }
//Join Meeting with passed Meeting ID and Passcode
        //Join Meeting with passed Meeting ID and Passcode public func joinMeeting(call: FlutterMethodCall, result: FlutterResult) {
publicfunc joinMeeting(call: FlutterMethodCall, result: FlutterResult) {
let meetingService = MobileRTC.shared().getMeetingService()
let meetingService = MobileRTC.shared().getMeetingService() let meetingSettings = MobileRTC.shared().getMeetingSettings()
let meetingSettings = MobileRTC.shared().getMeetingSettings()
if (meetingService != nil) {
if (meetingService != nil) { let arguments = call.arguments as! Dictionary<String, String?>
let arguments = call.arguments as! Dictionary<String, String?>
//Setting up meeting settings for zoom sdk
                //Setting up meeting settings for zoom sdk meetingSettings?.disableDriveMode(parseBoolean(data: arguments["disableDrive"]!, defaultValue: false))
                meetingSettings?.disableDriveMode(parseBoolean(data: arguments["disableDrive"]!, defaultValue: false)) meetingSettings?.disableCall(in: parseBoolean(data: arguments["disableDialIn"]!, defaultValue: false))
                meetingSettings?.disableCall(in: parseBoolean(data: arguments["disableDialIn"]!, defaultValue: false)) meetingSettings?.setAutoConnectInternetAudio(parseBoolean(data: arguments["noDisconnectAudio"]!, defaultValue: false))
                meetingSettings?.setAutoConnectInternetAudio(parseBoolean(data: arguments["noDisconnectAudio"]!, defaultValue: false)) meetingSettings?.setMuteAudioWhenJoinMeeting(parseBoolean(data: arguments["noAudio"]!, defaultValue: false))
                meetingSettings?.setMuteAudioWhenJoinMeeting(parseBoolean(data: arguments["noAudio"]!, defaultValue: false)) meetingSettings?.meetingShareHidden = parseBoolean(data: arguments["disableShare"]!, defaultValue: false)
                meetingSettings?.meetingShareHidden = parseBoolean(data: arguments["disableShare"]!, defaultValue: false) meetingSettings?.meetingInviteHidden = parseBoolean(data: arguments["disableDrive"]!, defaultValue: false)
                meetingSettings?.meetingInviteHidden = parseBoolean(data: arguments["disableDrive"]!, defaultValue: false) meetingSettings?.meetingTitleHidden = parseBoolean(data:arguments["disableTitlebar"]!, defaultValue: false)
                meetingSettings?.meetingTitleHidden = parseBoolean(data:arguments["disableTitlebar"]!, defaultValue: false) let viewopts = parseBoolean(data:arguments["viewOptions"]!, defaultValue: false)
let viewopts = parseBoolean(data:arguments["viewOptions"]!, defaultValue: false) if viewopts {
if viewopts { meetingSettings?.meetingTitleHidden = true
                    meetingSettings?.meetingTitleHidden = true meetingSettings?.meetingPasswordHidden = true
                    meetingSettings?.meetingPasswordHidden = true }
                }
//Setting up Join Meeting parameter
                //Setting up Join Meeting parameter let joinMeetingParameters = MobileRTCMeetingJoinParam()
let joinMeetingParameters = MobileRTCMeetingJoinParam()
//Setting up Custom Join Meeting parameter
                //Setting up Custom Join Meeting parameter joinMeetingParameters.userName = arguments["userId"]!!
                joinMeetingParameters.userName = arguments["userId"]!! joinMeetingParameters.meetingNumber = arguments["meetingId"]!!
                joinMeetingParameters.meetingNumber = arguments["meetingId"]!! joinMeetingParameters.webinarToken="6KWye9SgmDNJpLoiE_VbrnyYr51JqYznhhIW140Aymk.DQMAAAATsesehhZYelp4UEREZlJuT3FEblZ5bktPbjZnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
                joinMeetingParameters.webinarToken="6KWye9SgmDNJpLoiE_VbrnyYr51JqYznhhIW140Aymk.DQMAAAATsesehhZYelp4UEREZlJuT3FEblZ5bktPbjZnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" let hasPassword = arguments["meetingPassword"]! != nil
if hasPassword {
let hasPassword = arguments["meetingPassword"]! != nil joinMeetingParameters.password = arguments["meetingPassword"]!!
if hasPassword { }
                    joinMeetingParameters.password = arguments["meetingPassword"]!!
                }
//Joining the meeting and storing the response
                //Joining the meeting and storing the response let response = meetingService?.joinMeeting(with: joinMeetingParameters)
let response = meetingService?.joinMeeting(with: joinMeetingParameters)
if let response = response {
iflet response = response { print("Got response from join: \(response)")
                    print("Got response from join: \(response)") }
                } result(true)
                result(true) } else {
            } else { result(false)
                result(false) }
            } }
        }
// Basic Start Meeting Function called on startMeeting triggered via login function
        // Basic Start Meeting Function called on startMeeting triggered via login function public func startMeeting(call: FlutterMethodCall, result: FlutterResult) {
publicfunc startMeeting(call: FlutterMethodCall, result: FlutterResult) {
let meetingService = MobileRTC.shared().getMeetingService()
let meetingService = MobileRTC.shared().getMeetingService() let meetingSettings = MobileRTC.shared().getMeetingSettings()
let meetingSettings = MobileRTC.shared().getMeetingSettings() let authService = MobileRTC.shared().getAuthService()
let authService = MobileRTC.shared().getAuthService()
if meetingService != nil{
if meetingService != nil{ if ((authService?.isLoggedIn()) == true) {
if ((authService?.isLoggedIn()) == true) { let arguments = call.arguments as! Dictionary<String, String?>
let arguments = call.arguments as! Dictionary<String, String?>
//Setting up meeting settings for zoom sdk
                    //Setting up meeting settings for zoom sdk meetingSettings?.disableDriveMode(parseBoolean(data: arguments["disableDrive"]!, defaultValue: false))
                    meetingSettings?.disableDriveMode(parseBoolean(data: arguments["disableDrive"]!, defaultValue: false)) meetingSettings?.disableCall(in: parseBoolean(data: arguments["disableDialIn"]!, defaultValue: false))
                    meetingSettings?.disableCall(in: parseBoolean(data: arguments["disableDialIn"]!, defaultValue: false)) meetingSettings?.setAutoConnectInternetAudio(parseBoolean(data: arguments["noDisconnectAudio"]!, defaultValue: false))
                    meetingSettings?.setAutoConnectInternetAudio(parseBoolean(data: arguments["noDisconnectAudio"]!, defaultValue: false)) meetingSettings?.setMuteAudioWhenJoinMeeting(parseBoolean(data: arguments["noAudio"]!, defaultValue: false))
                    meetingSettings?.setMuteAudioWhenJoinMeeting(parseBoolean(data: arguments["noAudio"]!, defaultValue: false)) meetingSettings?.meetingShareHidden = parseBoolean(data: arguments["disableShare"]!, defaultValue: false)
                    meetingSettings?.meetingShareHidden = parseBoolean(data: arguments["disableShare"]!, defaultValue: false) meetingSettings?.meetingInviteHidden = parseBoolean(data: arguments["disableDrive"]!, defaultValue: false)
                    meetingSettings?.meetingInviteHidden = parseBoolean(data: arguments["disableDrive"]!, defaultValue: false) let viewopts = parseBoolean(data:arguments["viewOptions"]!, defaultValue: false)
let viewopts = parseBoolean(data:arguments["viewOptions"]!, defaultValue: false) if viewopts {
if viewopts { meetingSettings?.meetingTitleHidden = true
                        meetingSettings?.meetingTitleHidden = true meetingSettings?.meetingPasswordHidden = true
                        meetingSettings?.meetingPasswordHidden = true }
                    }
//Setting up Start Meeting parameter
                    //Setting up Start Meeting parameter let startMeetingParameters = MobileRTCMeetingStartParam4LoginlUser()
let startMeetingParameters = MobileRTCMeetingStartParam4LoginlUser()
//Starting the meeting and storing the response
                    //Starting the meeting and storing the response let response = meetingService?.startMeeting(with: startMeetingParameters)
let response = meetingService?.startMeeting(with: startMeetingParameters)
if let response = response {
iflet response = response { print("Got response from start: \(response)")
                        print("Got response from start: \(response)") }
                    } result(["MEETING SUCCESS", "200"])
                    result(["MEETING SUCCESS", "200"]) }else{
                }else{ result(["LOGIN REQUIRED", "001"])
                    result(["LOGIN REQUIRED", "001"]) }
                } } else {
            } else { result(["SDK ERROR", "001"])
                result(["SDK ERROR", "001"]) }
            } }
        }
// Meeting ID passed Start Meeting Function called on startMeetingNormal triggered via startMeetingNormal function
        // Meeting ID passed Start Meeting Function called on startMeetingNormal triggered via startMeetingNormal function public func startMeetingNormalInternal(call: FlutterMethodCall, result: FlutterResult) {
publicfunc startMeetingNormalInternal(call: FlutterMethodCall, result: FlutterResult) {
let meetingService = MobileRTC.shared().getMeetingService()
let meetingService = MobileRTC.shared().getMeetingService() let meetingSettings = MobileRTC.shared().getMeetingSettings()
let meetingSettings = MobileRTC.shared().getMeetingSettings() let authService = MobileRTC.shared().getAuthService()
let authService = MobileRTC.shared().getAuthService()
if meetingService != nil{
if meetingService != nil{ if ((authService?.isLoggedIn()) == true) {
if ((authService?.isLoggedIn()) == true) { let arguments = call.arguments as! Dictionary<String, String?>
let arguments = call.arguments as! Dictionary<String, String?>
//Setting up meeting settings for zoom sdk
                    //Setting up meeting settings for zoom sdk meetingSettings?.disableDriveMode(parseBoolean(data: arguments["disableDrive"]!, defaultValue: false))
                    meetingSettings?.disableDriveMode(parseBoolean(data: arguments["disableDrive"]!, defaultValue: false)) meetingSettings?.disableCall(in: parseBoolean(data: arguments["disableDialIn"]!, defaultValue: false))
                    meetingSettings?.disableCall(in: parseBoolean(data: arguments["disableDialIn"]!, defaultValue: false)) meetingSettings?.setAutoConnectInternetAudio(parseBoolean(data: arguments["noDisconnectAudio"]!, defaultValue: false))
                    meetingSettings?.setAutoConnectInternetAudio(parseBoolean(data: arguments["noDisconnectAudio"]!, defaultValue: false)) meetingSettings?.setMuteAudioWhenJoinMeeting(parseBoolean(data: arguments["noAudio"]!, defaultValue: false))
                    meetingSettings?.setMuteAudioWhenJoinMeeting(parseBoolean(data: arguments["noAudio"]!, defaultValue: false)) meetingSettings?.meetingShareHidden = parseBoolean(data: arguments["disableShare"]!, defaultValue: false)
                    meetingSettings?.meetingShareHidden = parseBoolean(data: arguments["disableShare"]!, defaultValue: false) meetingSettings?.meetingInviteHidden = parseBoolean(data: arguments["disableDrive"]!, defaultValue: false)
                    meetingSettings?.meetingInviteHidden = parseBoolean(data: arguments["disableDrive"]!, defaultValue: false) let viewopts = parseBoolean(data:arguments["viewOptions"]!, defaultValue: false)
let viewopts = parseBoolean(data:arguments["viewOptions"]!, defaultValue: false) if viewopts {
if viewopts { meetingSettings?.meetingTitleHidden = true
                        meetingSettings?.meetingTitleHidden = true meetingSettings?.meetingPasswordHidden = true
                        meetingSettings?.meetingPasswordHidden = true }
                    }
//Setting up Start Meeting parameter
                    //Setting up Start Meeting parameter let startMeetingParameters = MobileRTCMeetingStartParam4LoginlUser()
let startMeetingParameters = MobileRTCMeetingStartParam4LoginlUser() //Passing custom Meeting ID for start meeting
                    //Passing custom Meeting ID for start meeting startMeetingParameters.meetingNumber = arguments["meetingId"]!!
                    startMeetingParameters.meetingNumber = arguments["meetingId"]!!
//Starting the meeting and storing the response
                    //Starting the meeting and storing the response let response = meetingService?.startMeeting(with: startMeetingParameters)
let response = meetingService?.startMeeting(with: startMeetingParameters)
if let response = response {
iflet response = response { print("Got response from start: \(response)")
                        print("Got response from start: \(response)") }
                    } result(["MEETING SUCCESS", "200"])
                    result(["MEETING SUCCESS", "200"]) }else{
                }else{ result(["LOGIN REQUIRED", "001"])
                    result(["LOGIN REQUIRED", "001"]) }
                } } else {
            } else { result(["SDK ERROR", "001"])
                result(["SDK ERROR", "001"]) }
            } }
        }
//Helper Function for parsing string to boolean value
        //Helper Function for parsing string to boolean value private func parseBoolean(data: String?, defaultValue: Bool) -> Bool {
privatefunc parseBoolean(data: String?, defaultValue: Bool) -> Bool { var result: Bool
var result: Bool
if let unwrappeData = data {
iflet unwrappeData = data { result = NSString(string: unwrappeData).boolValue
                result = NSString(string: unwrappeData).boolValue } else {
            } else { result = defaultValue
               result = defaultValue }
            } return result
return result }
        }
//Helper Function for parsing string to int value
        //Helper Function for parsing string to int value private func parseInt(data: String?, defaultValue: Int) -> Int {
privatefunc parseInt(data: String?, defaultValue: Int) -> Int { var result: Int
var result: Int
if let unwrappeData = data {
iflet unwrappeData = data { result = NSString(string: unwrappeData).integerValue
                result = NSString(string: unwrappeData).integerValue } else {
            } else { result = defaultValue
               result = defaultValue }
            } return result
return result }
        }
public func onMeetingError(_ error: MobileRTCMeetError, message: String?) {
publicfunc onMeetingError(_ error: MobileRTCMeetError, message: String?) {
}
        }
public func getMeetErrorMessage(_ errorCode: MobileRTCMeetError) -> String {
publicfunc getMeetErrorMessage(_ errorCode: MobileRTCMeetError) -> String {
let message = ""
let message = "" return message
return message }
        }
public func onMeetingStateChange(_ state: MobileRTCMeetingState) {
publicfunc onMeetingStateChange(_ state: MobileRTCMeetingState) {
guard let eventSink = eventSink else {
guardlet eventSink = eventSink else { return
return }
            }
eventSink(getStateMessage(state))
            eventSink(getStateMessage(state)) }
        }
//Listen to initializing sdk events
        //Listen to initializing sdk events public func onListen(withArguments arguments: Any?, eventSink events: @escaping FlutterEventSink) -> FlutterError? {
publicfunc onListen(withArguments arguments: Any?, eventSink events: @escaping FlutterEventSink) -> FlutterError? { self.eventSink = events
self.eventSink = events
let meetingService = MobileRTC.shared().getMeetingService()
let meetingService = MobileRTC.shared().getMeetingService() if meetingService == nil {
if meetingService == nil { return FlutterError(code: "Zoom SDK error", message: "ZoomSDK is not initialized", details: nil)
return FlutterError(code: "Zoom SDK error", message: "ZoomSDK is not initialized", details: nil) }
            } meetingService?.delegate = self
            meetingService?.delegate = self
return nil
returnnil }
        }
public func onCancel(withArguments arguments: Any?) -> FlutterError? {
publicfunc onCancel(withArguments arguments: Any?) -> FlutterError? { eventSink = nil
            eventSink = nil return nil
returnnil }
        }
//Get Meeting Status message with proper codes
        //Get Meeting Status message with proper codes private func getStateMessage(_ state: MobileRTCMeetingState?) -> [String] {
privatefunc getStateMessage(_ state: MobileRTCMeetingState?) -> [String] {
var message: [String]
var message: [String] switch state {
switch state { case .idle:
case  .idle: message = ["MEETING_STATUS_IDLE", "No meeting is running"]
                    message = ["MEETING_STATUS_IDLE", "No meeting is running"] break
break case .connecting:
case .connecting: message = ["MEETING_STATUS_CONNECTING", "Connect to the meeting server"]
                    message = ["MEETING_STATUS_CONNECTING", "Connect to the meeting server"] break
break case .inMeeting:
case .inMeeting: message = ["MEETING_STATUS_INMEETING", "Meeting is ready and in process"]
                    message = ["MEETING_STATUS_INMEETING", "Meeting is ready and in process"] break
break case .webinarPromote:
case .webinarPromote: message = ["MEETING_STATUS_WEBINAR_PROMOTE", "Upgrade the attendees to panelist in webinar"]
                    message = ["MEETING_STATUS_WEBINAR_PROMOTE", "Upgrade the attendees to panelist in webinar"] break
break case .webinarDePromote:
case .webinarDePromote: message = ["MEETING_STATUS_WEBINAR_DEPROMOTE", "Demote the attendees from the panelist"]
                    message = ["MEETING_STATUS_WEBINAR_DEPROMOTE", "Demote the attendees from the panelist"] break
break case .disconnecting:
case .disconnecting: message = ["MEETING_STATUS_DISCONNECTING", "Disconnect the meeting server, leave meeting status"]
                    message = ["MEETING_STATUS_DISCONNECTING", "Disconnect the meeting server, leave meeting status"] break;
break; case .ended:
case .ended: message = ["MEETING_STATUS_ENDED", "Meeting ends"]
                    message = ["MEETING_STATUS_ENDED", "Meeting ends"] break;
break; case .failed:
case .failed: message = ["MEETING_STATUS_FAILED", "Failed to connect the meeting server"]
                    message = ["MEETING_STATUS_FAILED", "Failed to connect the meeting server"] break;
break; case .reconnecting:
case .reconnecting: message = ["MEETING_STATUS_RECONNECTING", "Reconnecting meeting server status"]
                    message = ["MEETING_STATUS_RECONNECTING", "Reconnecting meeting server status"] break;
break; case .waitingForHost:
case .waitingForHost: message = ["MEETING_STATUS_WAITINGFORHOST", "Waiting for the host to start the meeting"]
                    message = ["MEETING_STATUS_WAITINGFORHOST", "Waiting for the host to start the meeting"] break;
break; case .inWaitingRoom:
case .inWaitingRoom: message = ["MEETING_STATUS_IN_WAITING_ROOM", "Participants who join the meeting before the start are in the waiting room"]
                    message = ["MEETING_STATUS_IN_WAITING_ROOM", "Participants who join the meeting before the start are in the waiting room"] break;
break; default:
default: message = ["MEETING_STATUS_UNKNOWN", "'(state?.rawValue ?? 9999)'"]
                    message = ["MEETING_STATUS_UNKNOWN", "'(state?.rawValue ?? 9999)'"] }
                } return message
return message }
            } }
        }
//Zoom SDK Authentication Listner
        //Zoom SDK Authentication Listner public class AuthenticationDelegate: NSObject, MobileRTCAuthDelegate {
publicclass AuthenticationDelegate: NSObject, MobileRTCAuthDelegate {
private var result: FlutterResult?
privatevar result: FlutterResult?
//Zoom SDK Authentication Listner - On Auth get result
            //Zoom SDK Authentication Listner - On Auth get result public func onAuth(_ result: FlutterResult?) -> AuthenticationDelegate {
publicfunc onAuth(_ result: FlutterResult?) -> AuthenticationDelegate { self.result = result
self.result = result return self
returnself }
            }
//Zoom SDK Authentication Listner - On MobileRTCAuth get result
            //Zoom SDK Authentication Listner - On MobileRTCAuth get result public func onMobileRTCAuthReturn(_ returnValue: MobileRTCAuthError) {
publicfunc onMobileRTCAuthReturn(_ returnValue: MobileRTCAuthError) {
if returnValue == .success {
if returnValue == .success { self.result?([0, 0])
self.result?([0, 0]) } else {
                } else { self.result?([1, 0])
self.result?([1, 0]) }
                }
self.result = nil
self.result = nil }
            }
//Zoom SDK Authentication Listner - On onMobileRTCLoginReturn get status
            //Zoom SDK Authentication Listner - On onMobileRTCLoginReturn get status public func onMobileRTCLoginReturn(_ returnValue: Int){
publicfunc onMobileRTCLoginReturn(_ returnValue: Int){
}
            }
//Zoom SDK Authentication Listner - On onMobileRTCLogoutReturn get message
            //Zoom SDK Authentication Listner - On onMobileRTCLogoutReturn get message public func onMobileRTCLogoutReturn(_ returnValue: Int) {
publicfunc onMobileRTCLogoutReturn(_ returnValue: Int) {
}
            }
//Zoom SDK Authentication Listner - On getAuthErrorMessage get message
            //Zoom SDK Authentication Listner - On getAuthErrorMessage get message public func getAuthErrorMessage(_ errorCode: MobileRTCAuthError) -> String {
publicfunc getAuthErrorMessage(_ errorCode: MobileRTCAuthError) -> String {
let message = ""
let message = ""
return message
return message }
            } }
        }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment