Commit 54a2bcde by Sai Sebastian

Update SwiftFlutterZoomSdkPlugin.swift

parent 4463cdb6
...@@ -2,424 +2,426 @@ import Flutter ...@@ -2,424 +2,426 @@ import Flutter
import UIKit import UIKit
import MobileRTC import MobileRTC
public class SwiftFlutterZoomSdkPlugin: NSObject, FlutterPlugin,FlutterStreamHandler , MobileRTCMeetingServiceDelegate { publicclass SwiftFlutterZoomSdkPlugin: NSObject, FlutterPlugin,FlutterStreamHandler , MobileRTCMeetingServiceDelegate {
var authenticationDelegate: AuthenticationDelegate var authenticationDelegate: AuthenticationDelegate
var eventSink: FlutterEventSink? var eventSink: FlutterEventSink?
public static func register(with registrar: FlutterPluginRegistrar) { publicstaticfunc 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)
}   }
override init(){ overrideinit(){
authenticationDelegate = AuthenticationDelegate()       authenticationDelegate = AuthenticationDelegate()
}   }
public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) { publicfunc 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)
}           }
}   }
public func onMethodCall(call: FlutterMethodCall, result: @escaping FlutterResult) { publicfunc 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
public func initZoom(call: FlutterMethodCall, result: @escaping FlutterResult) { publicfunc 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)
if let appKey = arguments["appKey"] { iflet appKey = arguments["appKey"] {
auth?.clientKey = appKey                 auth?.clientKey = appKey
}             }
if let appSecret = arguments["appSecret"] { iflet 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
public func login(call: FlutterMethodCall, result: @escaping FlutterResult) { publicfunc 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?.login(withEmail: arguments["userId"]!!, password: arguments["userPassword"]!!, rememberMe: false) //                  authService?
if ((authService?.isLoggedIn()) == true) { //                      .login(withEmail: arguments["userId"]!!, password: arguments["userPassword"]!!, rememberMe: false)
self.startMeeting(call:call, result:result); if ((authService?.isLoggedIn()) == true) {
} self.startMeeting(call:call, result:result);
}                   }
}               }
        }
//Perform start meeting function with logging in to the zoom account (Only for passed meeting id)
public func startMeetingNormal(call: FlutterMethodCall, result: @escaping FlutterResult) {         //Perform start meeting function with logging in to the zoom account (Only for passed meeting id)
let authService = MobileRTC.shared().getAuthService() publicfunc startMeetingNormal(call: FlutterMethodCall, result: @escaping FlutterResult) {
let authService = MobileRTC.shared().getAuthService()
if ((authService?.isLoggedIn()) == true) {
self.startMeetingNormalInternal(call:call, result:result); if ((authService?.isLoggedIn()) == true) {
}else{ self.startMeetingNormalInternal(call:call, result:result);
let arguments = call.arguments as! Dictionary<String, String?>                 }else{
authService?.login(withEmail: arguments["userId"]!!, password: arguments["userPassword"]!!, rememberMe: false) let arguments = call.arguments as! Dictionary<String, String?>
if ((authService?.isLoggedIn()) == true) {                    // authService?.login(withEmail: arguments["userId"]!!, password: arguments["userPassword"]!!, rememberMe: false)
self.startMeetingNormalInternal(call:call, result:result); if ((authService?.isLoggedIn()) == true) {
} self.startMeetingNormalInternal(call:call, result:result);
}                     }
}                 }
        }
//Listen to meeting status on joinning and starting the mmeting
public func meetingStatus(call: FlutterMethodCall, result: FlutterResult) {         //Listen to meeting status on joinning and starting the mmeting
publicfunc meetingStatus(call: FlutterMethodCall, result: FlutterResult) {
let meetingService = MobileRTC.shared().getMeetingService()
if meetingService != nil { let meetingService = MobileRTC.shared().getMeetingService()
let meetingState = meetingService?.getMeetingState() if meetingService != nil {
result(getStateMessage(meetingState)) let meetingState = meetingService?.getMeetingState()
} else {                 result(getStateMessage(meetingState))
result(["MEETING_STATUS_UNKNOWN", ""])             } else {
}                 result(["MEETING_STATUS_UNKNOWN", ""])
}             }
       }
//Get Meeting Details Programmatically after Starting the Meeting
public func meetingDetails(call: FlutterMethodCall, result: FlutterResult) {         //Get Meeting Details Programmatically after Starting the Meeting
publicfunc meetingDetails(call: FlutterMethodCall, result: FlutterResult) {
let meetingService = MobileRTC.shared().getMeetingService()
if meetingService != nil { let meetingService = MobileRTC.shared().getMeetingService()
let meetingPassword = MobileRTCInviteHelper.sharedInstance().rawMeetingPassword if meetingService != nil {
let meetingNumber = MobileRTCInviteHelper.sharedInstance().ongoingMeetingNumber let meetingPassword = MobileRTCInviteHelper.sharedInstance().rawMeetingPassword
let meetingNumber = MobileRTCInviteHelper.sharedInstance().ongoingMeetingNumber
result([meetingNumber, meetingPassword])
                result([meetingNumber, meetingPassword])
} else {
result(["MEETING_STATUS_UNKNOWN", "No status available"])             } else {
}                 result(["MEETING_STATUS_UNKNOWN", "No status available"])
}             }
        }
//Join Meeting with passed Meeting ID and Passcode
public func joinMeeting(call: FlutterMethodCall, result: FlutterResult) {         //Join Meeting with passed Meeting ID and Passcode
publicfunc joinMeeting(call: FlutterMethodCall, result: FlutterResult) {
let meetingService = MobileRTC.shared().getMeetingService()
let meetingSettings = MobileRTC.shared().getMeetingSettings() let meetingService = MobileRTC.shared().getMeetingService()
let meetingSettings = MobileRTC.shared().getMeetingSettings()
if (meetingService != nil) {
let arguments = call.arguments as! Dictionary<String, String?> if (meetingService != nil) {
let arguments = call.arguments as! Dictionary<String, String?>
//Setting up meeting settings for zoom sdk
meetingSettings?.disableDriveMode(parseBoolean(data: arguments["disableDrive"]!, defaultValue: false))                 //Setting up meeting settings for zoom sdk
meetingSettings?.disableCall(in: parseBoolean(data: arguments["disableDialIn"]!, defaultValue: false))                 meetingSettings?.disableDriveMode(parseBoolean(data: arguments["disableDrive"]!, defaultValue: false))
meetingSettings?.setAutoConnectInternetAudio(parseBoolean(data: arguments["noDisconnectAudio"]!, defaultValue: false))                 meetingSettings?.disableCall(in: parseBoolean(data: arguments["disableDialIn"]!, defaultValue: false))
meetingSettings?.setMuteAudioWhenJoinMeeting(parseBoolean(data: arguments["noAudio"]!, defaultValue: false))                 meetingSettings?.setAutoConnectInternetAudio(parseBoolean(data: arguments["noDisconnectAudio"]!, defaultValue: false))
meetingSettings?.meetingShareHidden = parseBoolean(data: arguments["disableShare"]!, defaultValue: false)                 meetingSettings?.setMuteAudioWhenJoinMeeting(parseBoolean(data: arguments["noAudio"]!, defaultValue: false))
meetingSettings?.meetingInviteHidden = parseBoolean(data: arguments["disableDrive"]!, defaultValue: false)                 meetingSettings?.meetingShareHidden = parseBoolean(data: arguments["disableShare"]!, defaultValue: false)
meetingSettings?.meetingTitleHidden = parseBoolean(data:arguments["disableTitlebar"]!, defaultValue: false)                 meetingSettings?.meetingInviteHidden = parseBoolean(data: arguments["disableDrive"]!, defaultValue: false)
let viewopts = parseBoolean(data:arguments["viewOptions"]!, defaultValue: false)                 meetingSettings?.meetingTitleHidden = parseBoolean(data:arguments["disableTitlebar"]!, defaultValue: false)
if viewopts { let viewopts = parseBoolean(data:arguments["viewOptions"]!, defaultValue: false)
meetingSettings?.meetingTitleHidden = true if viewopts {
meetingSettings?.meetingPasswordHidden = true                     meetingSettings?.meetingTitleHidden = true
}                     meetingSettings?.meetingPasswordHidden = true
                }
//Setting up Join Meeting parameter
let joinMeetingParameters = MobileRTCMeetingJoinParam()                 //Setting up Join Meeting parameter
let joinMeetingParameters = MobileRTCMeetingJoinParam()
//Setting up Custom Join Meeting parameter
joinMeetingParameters.userName = arguments["userId"]!!                 //Setting up Custom Join Meeting parameter
joinMeetingParameters.meetingNumber = arguments["meetingId"]!!                 joinMeetingParameters.userName = arguments["userId"]!!
                joinMeetingParameters.meetingNumber = arguments["meetingId"]!!
let hasPassword = arguments["meetingPassword"]! != nil                 joinMeetingParameters.webinarToken="6KWye9SgmDNJpLoiE_VbrnyYr51JqYznhhIW140Aymk.DQMAAAATsesehhZYelp4UEREZlJuT3FEblZ5bktPbjZnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
if hasPassword {
joinMeetingParameters.password = arguments["meetingPassword"]!! let hasPassword = arguments["meetingPassword"]! != nil
} if hasPassword {
                    joinMeetingParameters.password = arguments["meetingPassword"]!!
//Joining the meeting and storing the response                 }
let response = meetingService?.joinMeeting(with: joinMeetingParameters)
                //Joining the meeting and storing the response
if let response = response { let response = meetingService?.joinMeeting(with: joinMeetingParameters)
print("Got response from join: \(response)")
} iflet response = response {
result(true)                     print("Got response from join: \(response)")
} else {                 }
result(false)                 result(true)
}             } else {
}                 result(false)
            }
// Basic Start Meeting Function called on startMeeting triggered via login function         }
public func startMeeting(call: FlutterMethodCall, result: FlutterResult) {
        // Basic Start Meeting Function called on startMeeting triggered via login function
let meetingService = MobileRTC.shared().getMeetingService() publicfunc startMeeting(call: FlutterMethodCall, result: FlutterResult) {
let meetingSettings = MobileRTC.shared().getMeetingSettings()
let authService = MobileRTC.shared().getAuthService() let meetingService = MobileRTC.shared().getMeetingService()
let meetingSettings = MobileRTC.shared().getMeetingSettings()
if meetingService != nil{ let authService = MobileRTC.shared().getAuthService()
if ((authService?.isLoggedIn()) == true) {
let arguments = call.arguments as! Dictionary<String, String?> if meetingService != nil{
if ((authService?.isLoggedIn()) == true) {
//Setting up meeting settings for zoom sdk let arguments = call.arguments as! Dictionary<String, String?>
meetingSettings?.disableDriveMode(parseBoolean(data: arguments["disableDrive"]!, defaultValue: false))
meetingSettings?.disableCall(in: parseBoolean(data: arguments["disableDialIn"]!, defaultValue: false))                     //Setting up meeting settings for zoom sdk
meetingSettings?.setAutoConnectInternetAudio(parseBoolean(data: arguments["noDisconnectAudio"]!, defaultValue: false))                     meetingSettings?.disableDriveMode(parseBoolean(data: arguments["disableDrive"]!, defaultValue: false))
meetingSettings?.setMuteAudioWhenJoinMeeting(parseBoolean(data: arguments["noAudio"]!, defaultValue: false))                     meetingSettings?.disableCall(in: parseBoolean(data: arguments["disableDialIn"]!, defaultValue: false))
meetingSettings?.meetingShareHidden = parseBoolean(data: arguments["disableShare"]!, defaultValue: false)                     meetingSettings?.setAutoConnectInternetAudio(parseBoolean(data: arguments["noDisconnectAudio"]!, defaultValue: false))
meetingSettings?.meetingInviteHidden = parseBoolean(data: arguments["disableDrive"]!, defaultValue: false)                     meetingSettings?.setMuteAudioWhenJoinMeeting(parseBoolean(data: arguments["noAudio"]!, defaultValue: false))
let viewopts = parseBoolean(data:arguments["viewOptions"]!, defaultValue: false)                     meetingSettings?.meetingShareHidden = parseBoolean(data: arguments["disableShare"]!, defaultValue: false)
if viewopts {                     meetingSettings?.meetingInviteHidden = parseBoolean(data: arguments["disableDrive"]!, defaultValue: false)
meetingSettings?.meetingTitleHidden = true let viewopts = parseBoolean(data:arguments["viewOptions"]!, defaultValue: false)
meetingSettings?.meetingPasswordHidden = true if viewopts {
}                         meetingSettings?.meetingTitleHidden = true
                        meetingSettings?.meetingPasswordHidden = true
//Setting up Start Meeting parameter                     }
let startMeetingParameters = MobileRTCMeetingStartParam4LoginlUser()
                    //Setting up Start Meeting parameter
//Starting the meeting and storing the response let startMeetingParameters = MobileRTCMeetingStartParam4LoginlUser()
let response = meetingService?.startMeeting(with: startMeetingParameters)
                    //Starting the meeting and storing the response
if let response = response { let response = meetingService?.startMeeting(with: startMeetingParameters)
print("Got response from start: \(response)")
} iflet response = response {
result(["MEETING SUCCESS", "200"])                         print("Got response from start: \(response)")
}else{                     }
result(["LOGIN REQUIRED", "001"])                     result(["MEETING SUCCESS", "200"])
}                 }else{
} else {                     result(["LOGIN REQUIRED", "001"])
result(["SDK ERROR", "001"])                 }
}             } else {
}                 result(["SDK ERROR", "001"])
            }
// Meeting ID passed Start Meeting Function called on startMeetingNormal triggered via startMeetingNormal function         }
public func startMeetingNormalInternal(call: FlutterMethodCall, result: FlutterResult) {
        // Meeting ID passed Start Meeting Function called on startMeetingNormal triggered via startMeetingNormal function
let meetingService = MobileRTC.shared().getMeetingService() publicfunc startMeetingNormalInternal(call: FlutterMethodCall, result: FlutterResult) {
let meetingSettings = MobileRTC.shared().getMeetingSettings()
let authService = MobileRTC.shared().getAuthService() let meetingService = MobileRTC.shared().getMeetingService()
let meetingSettings = MobileRTC.shared().getMeetingSettings()
if meetingService != nil{ let authService = MobileRTC.shared().getAuthService()
if ((authService?.isLoggedIn()) == true) {
let arguments = call.arguments as! Dictionary<String, String?> if meetingService != nil{
if ((authService?.isLoggedIn()) == true) {
//Setting up meeting settings for zoom sdk let arguments = call.arguments as! Dictionary<String, String?>
meetingSettings?.disableDriveMode(parseBoolean(data: arguments["disableDrive"]!, defaultValue: false))
meetingSettings?.disableCall(in: parseBoolean(data: arguments["disableDialIn"]!, defaultValue: false))                     //Setting up meeting settings for zoom sdk
meetingSettings?.setAutoConnectInternetAudio(parseBoolean(data: arguments["noDisconnectAudio"]!, defaultValue: false))                     meetingSettings?.disableDriveMode(parseBoolean(data: arguments["disableDrive"]!, defaultValue: false))
meetingSettings?.setMuteAudioWhenJoinMeeting(parseBoolean(data: arguments["noAudio"]!, defaultValue: false))                     meetingSettings?.disableCall(in: parseBoolean(data: arguments["disableDialIn"]!, defaultValue: false))
meetingSettings?.meetingShareHidden = parseBoolean(data: arguments["disableShare"]!, defaultValue: false)                     meetingSettings?.setAutoConnectInternetAudio(parseBoolean(data: arguments["noDisconnectAudio"]!, defaultValue: false))
meetingSettings?.meetingInviteHidden = parseBoolean(data: arguments["disableDrive"]!, defaultValue: false)                     meetingSettings?.setMuteAudioWhenJoinMeeting(parseBoolean(data: arguments["noAudio"]!, defaultValue: false))
let viewopts = parseBoolean(data:arguments["viewOptions"]!, defaultValue: false)                     meetingSettings?.meetingShareHidden = parseBoolean(data: arguments["disableShare"]!, defaultValue: false)
if viewopts {                     meetingSettings?.meetingInviteHidden = parseBoolean(data: arguments["disableDrive"]!, defaultValue: false)
meetingSettings?.meetingTitleHidden = true let viewopts = parseBoolean(data:arguments["viewOptions"]!, defaultValue: false)
meetingSettings?.meetingPasswordHidden = true if viewopts {
}                         meetingSettings?.meetingTitleHidden = true
                        meetingSettings?.meetingPasswordHidden = true
//Setting up Start Meeting parameter                     }
let startMeetingParameters = MobileRTCMeetingStartParam4LoginlUser()
//Passing custom Meeting ID for start meeting                     //Setting up Start Meeting parameter
startMeetingParameters.meetingNumber = arguments["meetingId"]!! let startMeetingParameters = MobileRTCMeetingStartParam4LoginlUser()
                    //Passing custom Meeting ID for start meeting
//Starting the meeting and storing the response                     startMeetingParameters.meetingNumber = arguments["meetingId"]!!
let response = meetingService?.startMeeting(with: startMeetingParameters)
                    //Starting the meeting and storing the response
if let response = response { let response = meetingService?.startMeeting(with: startMeetingParameters)
print("Got response from start: \(response)")
} iflet response = response {
result(["MEETING SUCCESS", "200"])                         print("Got response from start: \(response)")
}else{                     }
result(["LOGIN REQUIRED", "001"])                     result(["MEETING SUCCESS", "200"])
}                 }else{
} else {                     result(["LOGIN REQUIRED", "001"])
result(["SDK ERROR", "001"])                 }
}             } else {
}                 result(["SDK ERROR", "001"])
            }
//Helper Function for parsing string to boolean value         }
private func parseBoolean(data: String?, defaultValue: Bool) -> Bool {
var result: Bool         //Helper Function for parsing string to boolean value
privatefunc parseBoolean(data: String?, defaultValue: Bool) -> Bool {
if let unwrappeData = data { var result: Bool
result = NSString(string: unwrappeData).boolValue
} else { iflet unwrappeData = data {
result = defaultValue                 result = NSString(string: unwrappeData).boolValue
}             } else {
return result                result = defaultValue
}             }
return result
//Helper Function for parsing string to int value         }
private func parseInt(data: String?, defaultValue: Int) -> Int {
var result: Int         //Helper Function for parsing string to int value
privatefunc parseInt(data: String?, defaultValue: Int) -> Int {
if let unwrappeData = data { var result: Int
result = NSString(string: unwrappeData).integerValue
} else { iflet unwrappeData = data {
result = defaultValue                 result = NSString(string: unwrappeData).integerValue
}             } else {
return result                result = defaultValue
}             }
return result
        }
public func onMeetingError(_ error: MobileRTCMeetError, message: String?) {
} publicfunc onMeetingError(_ error: MobileRTCMeetError, message: String?) {
public func getMeetErrorMessage(_ errorCode: MobileRTCMeetError) -> String {         }
let message = "" publicfunc getMeetErrorMessage(_ errorCode: MobileRTCMeetError) -> String {
return message
} let message = ""
return message
public func onMeetingStateChange(_ state: MobileRTCMeetingState) {         }
guard let eventSink = eventSink else { publicfunc onMeetingStateChange(_ state: MobileRTCMeetingState) {
return
} guardlet eventSink = eventSink else {
return
eventSink(getStateMessage(state))             }
}
            eventSink(getStateMessage(state))
//Listen to initializing sdk events         }
public func onListen(withArguments arguments: Any?, eventSink events: @escaping FlutterEventSink) -> FlutterError? {
self.eventSink = events         //Listen to initializing sdk events
publicfunc onListen(withArguments arguments: Any?, eventSink events: @escaping FlutterEventSink) -> FlutterError? {
let meetingService = MobileRTC.shared().getMeetingService() self.eventSink = events
if meetingService == nil {
return FlutterError(code: "Zoom SDK error", message: "ZoomSDK is not initialized", details: nil) let meetingService = MobileRTC.shared().getMeetingService()
} if meetingService == nil {
meetingService?.delegate = self return FlutterError(code: "Zoom SDK error", message: "ZoomSDK is not initialized", details: nil)
            }
return nil             meetingService?.delegate = self
}
returnnil
public func onCancel(withArguments arguments: Any?) -> FlutterError? {         }
eventSink = nil
return nil publicfunc onCancel(withArguments arguments: Any?) -> FlutterError? {
}             eventSink = nil
returnnil
//Get Meeting Status message with proper codes         }
private func getStateMessage(_ state: MobileRTCMeetingState?) -> [String] {
        //Get Meeting Status message with proper codes
var message: [String] privatefunc getStateMessage(_ state: MobileRTCMeetingState?) -> [String] {
switch state {
case .idle: var message: [String]
message = ["MEETING_STATUS_IDLE", "No meeting is running"] switch state {
break case  .idle:
case .connecting:                     message = ["MEETING_STATUS_IDLE", "No meeting is running"]
message = ["MEETING_STATUS_CONNECTING", "Connect to the meeting server"] break
break case .connecting:
case .inMeeting:                     message = ["MEETING_STATUS_CONNECTING", "Connect to the meeting server"]
message = ["MEETING_STATUS_INMEETING", "Meeting is ready and in process"] break
break case .inMeeting:
case .webinarPromote:                     message = ["MEETING_STATUS_INMEETING", "Meeting is ready and in process"]
message = ["MEETING_STATUS_WEBINAR_PROMOTE", "Upgrade the attendees to panelist in webinar"] break
break case .webinarPromote:
case .webinarDePromote:                     message = ["MEETING_STATUS_WEBINAR_PROMOTE", "Upgrade the attendees to panelist in webinar"]
message = ["MEETING_STATUS_WEBINAR_DEPROMOTE", "Demote the attendees from the panelist"] break
break case .webinarDePromote:
case .disconnecting:                     message = ["MEETING_STATUS_WEBINAR_DEPROMOTE", "Demote the attendees from the panelist"]
message = ["MEETING_STATUS_DISCONNECTING", "Disconnect the meeting server, leave meeting status"] break
break; case .disconnecting:
case .ended:                     message = ["MEETING_STATUS_DISCONNECTING", "Disconnect the meeting server, leave meeting status"]
message = ["MEETING_STATUS_ENDED", "Meeting ends"] break;
break; case .ended:
case .failed:                     message = ["MEETING_STATUS_ENDED", "Meeting ends"]
message = ["MEETING_STATUS_FAILED", "Failed to connect the meeting server"] break;
break; case .failed:
case .reconnecting:                     message = ["MEETING_STATUS_FAILED", "Failed to connect the meeting server"]
message = ["MEETING_STATUS_RECONNECTING", "Reconnecting meeting server status"] break;
break; case .reconnecting:
case .waitingForHost:                     message = ["MEETING_STATUS_RECONNECTING", "Reconnecting meeting server status"]
message = ["MEETING_STATUS_WAITINGFORHOST", "Waiting for the host to start the meeting"] break;
break; case .waitingForHost:
case .inWaitingRoom:                     message = ["MEETING_STATUS_WAITINGFORHOST", "Waiting for the host to start the meeting"]
message = ["MEETING_STATUS_IN_WAITING_ROOM", "Participants who join the meeting before the start are in the waiting room"] break;
break; case .inWaitingRoom:
default:                     message = ["MEETING_STATUS_IN_WAITING_ROOM", "Participants who join the meeting before the start are in the waiting room"]
message = ["MEETING_STATUS_UNKNOWN", "'(state?.rawValue ?? 9999)'"] break;
} default:
return message                     message = ["MEETING_STATUS_UNKNOWN", "'(state?.rawValue ?? 9999)'"]
}                 }
} return message
            }
//Zoom SDK Authentication Listner         }
public class AuthenticationDelegate: NSObject, MobileRTCAuthDelegate {
        //Zoom SDK Authentication Listner
private var result: FlutterResult? publicclass AuthenticationDelegate: NSObject, MobileRTCAuthDelegate {
//Zoom SDK Authentication Listner - On Auth get result privatevar result: FlutterResult?
public func onAuth(_ result: FlutterResult?) -> AuthenticationDelegate {
self.result = result             //Zoom SDK Authentication Listner - On Auth get result
return self publicfunc onAuth(_ result: FlutterResult?) -> AuthenticationDelegate {
} self.result = result
returnself
//Zoom SDK Authentication Listner - On MobileRTCAuth get result             }
public func onMobileRTCAuthReturn(_ returnValue: MobileRTCAuthError) {
            //Zoom SDK Authentication Listner - On MobileRTCAuth get result
if returnValue == .success { publicfunc onMobileRTCAuthReturn(_ returnValue: MobileRTCAuthError) {
self.result?([0, 0])
} else { if returnValue == .success {
self.result?([1, 0]) self.result?([0, 0])
}                 } else {
self.result?([1, 0])
self.result = nil                 }
}
self.result = nil
//Zoom SDK Authentication Listner - On onMobileRTCLoginReturn get status             }
public func onMobileRTCLoginReturn(_ returnValue: Int){
            //Zoom SDK Authentication Listner - On onMobileRTCLoginReturn get status
} publicfunc onMobileRTCLoginReturn(_ returnValue: Int){
//Zoom SDK Authentication Listner - On onMobileRTCLogoutReturn get message             }
public func onMobileRTCLogoutReturn(_ returnValue: Int) {
            //Zoom SDK Authentication Listner - On onMobileRTCLogoutReturn get message
} publicfunc onMobileRTCLogoutReturn(_ returnValue: Int) {
//Zoom SDK Authentication Listner - On getAuthErrorMessage get message             }
public func getAuthErrorMessage(_ errorCode: MobileRTCAuthError) -> String {
            //Zoom SDK Authentication Listner - On getAuthErrorMessage get message
let message = "" publicfunc getAuthErrorMessage(_ errorCode: MobileRTCAuthError) -> String {
return message let 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