Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Z
Zoom_SDK
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Sai Sebastian
Zoom_SDK
Commits
54a2bcde
Commit
54a2bcde
authored
Sep 30, 2022
by
Sai Sebastian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update SwiftFlutterZoomSdkPlugin.swift
parent
4463cdb6
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
423 additions
and
421 deletions
+423
-421
SwiftFlutterZoomSdkPlugin.swift
ios/Classes/SwiftFlutterZoomSdkPlugin.swift
+423
-421
No files found.
ios/Classes/SwiftFlutterZoomSdkPlugin.swift
View file @
54a2bcde
...
@@ -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
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment