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
c0cafc3b
Commit
c0cafc3b
authored
Sep 30, 2022
by
Sai Sebastian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update SwiftFlutterZoomSdkPlugin.swift
parent
bd0725df
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
422 additions
and
423 deletions
+422
-423
SwiftFlutterZoomSdkPlugin.swift
ios/Classes/SwiftFlutterZoomSdkPlugin.swift
+422
-423
No files found.
ios/Classes/SwiftFlutterZoomSdkPlugin.swift
View file @
c0cafc3b
...
@@ -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
}
}
}
}
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