All notable changes to this project will be documented in this file.
3.14.0
Releases - 3.14.0
3.13.0
Releases - 3.13.0
3.12.0
Releases - 3.12.0
3.11.3
Releases - 3.11.3
3.11.2
Releases - 3.11.2
3.11.1
Releases - 3.11.1
3.11.0
Releases - 3.11.0
3.10.1
Releases - 3.10.1
3.10.0
Releases - 3.10.0
3.9.2
Releases - 3.9.2
3.9.1
Releases - 3.9.1
3.9.0
Releases - 3.9.0
3.8.3
Releases - 3.8.3
3.8.2
Releases - 3.8.2
3.8.1
Releases - 3.8.1
3.8.0
Releases - 3.8.0
3.7.0
Releases - 3.7.0
3.6.0
Releases - 3.6.0
3.5.0
Releases - 3.5.0
3.4.0
Releases - 3.4.0
3.3.0
Releases - 3.3.0
3.2.1
Releases - 3.2.1
3.2.0
Releases - 3.2.0
3.1.0
Releases - 3.1.0
3.0.0
Releases - 3.0.0
2.8.0
Releases - 2.8.0
2.7.0
Releases - 2.7.0
2.6.0
Releases - 2.6.0
2.5.0
Releases - 2.5.0
2.4.0
Releases - 2.4.0
2.3.0
Releases - 2.3.0
2.1.0
Releases - 2.1.0
2.0.0
Releases - 2.0.0
1.4.1
Releases - 1.4.1
1.4.0
Releases - 1.4.0
1.3.1
Releases - 1.3.1
1.3.0
Releases - 1.3.0
1.2.0
Releases - 1.2.0
1.1.0
Releases - 1.1.0
1.0.0
Releases - 1.0.0
0.9.149
Releases - 0.9.149
0.9.148
Releases - 0.9.148
0.9.147
Releases - 0.9.147
0.9.146
Releases - 0.9.146
0.9.137
Releases - 0.9.137
Released on 13 November, 2024.
- New Enum
SpeechEnhancementResult
to represent the result of speech enhancement operation. - New API added
Phone.useLegacyReceiverNoiseRemoval(useLegacy: Bool)
to enable legacy receiver side noise removal. This will disable the new receiver side speech enhancement. - New API added
Phone.isReceiverSpeechEnhancementEnabled: Bool
to check if receiver side speech enhancement is enabled by default. - New API added
Phone.enableSpeechEnhancement(enable: Bool, completionHandler: @escaping (Result<Void>) -> Void)
to enable or disable speech enhancement for all calls. - New API added
Call.isReceiverSpeechEnhancementEnabled: Bool
to check if speech enhancement is enabled for the call. - New API added
Call.enableSpeechEnhancement(enable: Bool, completionHandler: @escaping (Result<Void>) -> Void)
to enable or disable speech enhancement for the call. - New error message
NonExistentCallPull
to represent the error when trying to pull a non-existent call by dialing *11. - New enum values
InternalError
,UserNotFound
,UserPending
,UserVerificationFailed
,UserNeedsReactivation
when user logs in via OAuth flow.
- Fixed: Issue with Move meeting from SDK to other clients.
- Fixed: Issue with the audio connection when the user is on multiple calls.
Released on 21 Aug, 2024.
- New Enum
RecordAudioDumpResult
to represent error while doing audio dump related operations. - New API added
Call.isRecordingAudioDump
to check if the audio dump is being recorded for ongoing meeting/call. - New API added
Call.canStartRecordingAudioDump(completionHandler: @escaping (Error?) -> Void)
to check if the audio dump can be recorded for ongoing meeting/call. - New API added
Call.startRecordingAudioDump(completionHandler: @escaping (Error?) -> Void)
to start recording the audio dump for ongoing meeting/call. - New API added
Call.stopRecordingAudioDump(completionHandler: @escaping (Error?) -> Void)
to stop recording the audio dump.
- Fixed a bug related to deleting virtual background which is set for preview.
Released on 08 Jul, 2024.
- New Class
CameraDeviceManager
to manage the external camera related operations. - New Struct
Camera
to represent camera devices either built-in or externally attached. - New Enum
CompanionMode
to set the companion mode for Move Meeting. - New Enum
UpdateSystemCameraResult
to represent error while updating system preferred camera. - New Callback
Call.onMoveMeetingFailed: (() -> Void)?
when an attempt to move meeting fails for the call. - New Callback
CameraDeviceManager.onExternalCameraDeviceConnected: ((_ camera: Camera) -> Void)
when external camera is connected. - New Callback
CameraDeviceManager.onExternalCameraDeviceDisconnected: (() -> Void)?
when external camera is disconnected. - New API added
Phone.updateSystemPreferredCamera(camera: Camera, completionHandler: @escaping (Result<Void>) -> Void)
to update the system preferred camera. - New API added
Phone.getListOfCameras() -> [Camera]
to get the list of all available cameras. - New API added
Phone.isMoveMeetingSupported(meetingId : String) -> Bool
to check if the move meeting feature is supported for the given meeting.
isOngoingMeeting
andeventId
fields are added to theMeeting
struct.companionMode
field added to theMediaOption
struct.
Released on 6 Jun, 2024.
- The dial & dialPhoneNumber APIs will have the error description in case of failure.
- Access token invalidation or expiry will result in the SDK APIs returning Unauthorized error inside the completion handlers.
- The
Phone.processPushNotification(msg : String, handler: CompletionHandler<PushNotificationResult>)
handler to return error in case of any failure. The error object will have the error code and error description. - Completion handlers returning InternalError will have error descriptions.
Released on 7 May, 2024.
- New delegate
WebexAuthDelegate
to receive all authentication related event callbacks. - New delegate function
onReLoginRequired()
inWebexAuthDelegate
to notify when user auth token becomes stale or revoked and re login is required.
Released on 8 April, 2024.
- Added iOS Privacy Manifest file.
- H264 prompt is removed for video and screen share flows.
- Made
Webex
class singleton. - Made
webex.initialize()
method thread safe and added check to avoid multiple initializations. - Fixed: Call Failed issue during rejoin after host ends the meeting for all and starts again.
Released on 13 Feb, 2024.
- New Enum
InviteParticipantError
to represent error while adding a participant to the call. - New Enum
MakeHostError
to represent error while making a participant host in the call. - New Enum
ReclaimHostError
to represent error while reclaiming the host role in the call. - New API added
Call.inviteParticipant(participant: String, completionHandler: @escaping (Result<Void>) -> Void)
to invite a participant to the call. - New API added
Call.reclaimHost(hostKey: String, completionHandler: @escaping (Result<Void>) -> Void)
to reclaim the host role using the host key. - New API added
Call.makeHost(participantId: String, completionHandler: @escaping (Result<Void>) -> Void)
to assign the host role to a participant.
isPresenter
,isCohost
andisHost
fields are added to theCallMembership
struct.- New Enum case
CallError.cannotStartInstantMeeting
to represent error cannot start instant meeting. - Messaging module removed in size optimized WxC SDK.
- Added
parent
field in postMessage APIs in MessageClient to reply to a message thread.
Released on 12 Dec, 2023.
- New Struct
ProductCapability
which represents the product capabilities for the logged in user. - New API added
Person.getProductCapability() -> ProductCapability
to get the supported capability of the current user.
- General improvements and bug fixes.
Released on 16 Oct, 2023.
- New Struct
Presence
which represents Presence info for a person. - New Struct
PresenceHandle
which represents the contacts whose presence status are being watched. - New Struct
VoicePushInfo
which represents the caller related information received from VoIP payload. - New Struct
LanguageItem
represents LanguageItem of ClosedCaption of a call. - New Struct
ClosedCaptionsInfo
represents ClosedCaptionsInfo of a call. - New Struct
CaptionItem
represents CaptionItem of ClosedCaption of a call. - New Enum
AudioOutputMode
options to switch audio output during a call. - New Enum
PresenceStatus
indicating the Presence status of a person. - New Enum
SpokenLanguageSelectionError
to represent error for setting current spoken language. - New Enum
TranslationLanguageSelectionError
to represent error for setting current translation language. - New API added
Person.startWatchingPresences(contactIds: [String], completionHandler: @escaping (Presence) -> Void) -> [PresenceHandle]
to start watching presence status update of the list of contact ids that are provided as input. - New API added
Person.stopWatchingPresences(presenceHandles: [PresenceHandle])
to stop watching presence status of the list of presence handle that are provided as input. - New API added
Call.callerNumber: String
caller number of the active WebexCalling or CUCM call. - New API added
Call.getCurrentAudioOutput() -> AudioOutputMode
to get the current audio output device for the call. - New API added
Call.setAudioOutput(mode: AudioOutputMode, completion: (Result<Bool>) -> ())
to set the current audio output device for the call. - New API added
Call.isClosedCaptionAllowed: Bool
Returns if Closed Caption allowed or not for thisCall
. - New API added
Call.isClosedCaptionEnabled: Bool
to let you know current state of the closed caption. - New API added
Call.toggleClosedCaption(enable: Bool, completionHandler: @escaping (Bool) -> Void )
to toggle ClosedCaption on/off for thisCall
. - New API added
Call.getClosedCaptionsInfo() -> ClosedCaptionsInfo
to get theClosedCaptionsInfo
of thisCall
. - New API added
Phone.isH264LicenseActivated() -> Bool
to indicate the status of H264 license prompt acceptance. - New API added
Webex.parseVoIPPayload(payload: PKPushPayload) -> VoicePushInfo?
to parses and returns the caller related information from the VoIP notification. - New Callback added
Call.onClosedCaptionsInfoChanged: ((ClosedCaptionsInfo) -> Void)?
to notify when ClosedCaptionsInfo changes for thisCall
. - Ability to support assisted transfer when the SDK client already has 2 active calls.
- Subscribing for certain call events via mercury is now supported.
- Optimised WxC Calling only sdk for runtime performance.
- FIXED: Made
MediaRenderView
optional while setting MediaOption. - FIXED: activeSpeakerChangedEvent event notified when the active speaker changes in the meeting
Released on 11 Aug, 2023.
- New API added
Phone.dialPhoneNumber(_ address: String, option: MediaOption, completionHandler: @escaping (Result<Call>) -> Void)
to dial only phone numbers. - New API
CallHistoryRecord.isPhoneNumber
to denote if the number dialled in call record was a phone number.
- FIXED: Enabling preservation of AVRoutePickerView choices for audio/video output in pre-meeting/call screens.
- FIXED: Removed Camera permissions and H264 prompt for audio only flows.
- FIXED: Call failed or meeting failure issue due to mediaTimeout.
Released on 19 June, 2023.
- New API added
Call.externalTrackingId
to get the external tracking id for corresponding call. Applicable only for WxC calls. - Webhook URL can be set to get incoming WxC calls.
- FIXED: Self video turning off in case of poor uplink event.
Released on 5 June, 2023.
- New SDK variant
Webex/Wxc
, a light weight SDK for WebexCalling. - New struct
ShareConfig
a data type to represent the share screen configuration. - New Callback
Call.onStartRinger: ((RingerType) -> Void)
when a ringer has to be started. - New Callback
Call.onStopRinger: ((RingerType) -> Void)
when a ringer has to be stopped. - New Enum
Call.RingerType
for a ringerType to denote the type of tone to be played / stopped. - New Enum
CallMembership.DeviceType
for device types. - New Enum
ShareOptimizeType
to represent the OptimiseType for share screen. - New API
Person.encodedId
to get base64 encoded Id of the person. - New API
CallMembership.deviceType
to get device type joined by this CallMembership. - New API
CallMembership.pairedMemberships
to get all memberships joined using deviceType Room. - New API
Call.isVideoEnabled
to Indicate whether video calling is enabled for the user in Control hub. - New API
Call.getShareConfig()
to get the share screen optimisation type of the call. - New Feature to support multiple active Webex calls.
- New Feature to support end-to-end encrypted meetings.
- Authorization code can be set using
call.send(dtmf: String, completionHandler: ((Error?) -> Void)?)
API for Wxc calls. - New API
Call.receivingNoiseInfo
to get the info object which contains information on Receiving noise removal state. - New API
Call.enableReceivingNoiseRemoval(shouldEnable: Bool)
to enable or disable receiving noise removal functionality for incoming PSTN calls.
- Updated
Message.Text.plain
,Message.Text.html
andMessage.Text.markdown
from internal to public private(set) access. - Screen sharing now have optimisation options as part of share config in
startSharing()
- Now FedRamp can be enabled through authenticators.
- Now
DisconnectReason.RemoteCancel
event will be fired when host ends meeting for all or kicked by host. - FIXED: Unable to connect with bluetooth devices for call issue.
- FIXED: Webex calling failures for certificate issues.
- FIXED : MessagesUpdate callback getting called for internal provisional messages.
- FIXED : MessagesUpdate callback not getting called with decrypted content in some cases, after list message API was called.
Released on 16 Mar, 2023.
- FIXED - Fixed an issue where the SDK logs not showing in Xcode console.
Released on 17 Feb, 2023.
- FIXED - Fixed an issue where the SDK wasn't working for Xcode simulators.
Released on 08 Feb, 2023.
- FIXED - Fixed an issue where the SDK wasn't compiling for Xcode versions below Xcode14.
Released on 25 January, 2023.
- New SDK variant
WebexSDK/Meeting
, a light weighted meeting-only SDK(doesn’t include calling). - New API
setCallServiceCredential(username: String, password: String)
to set username and password for authentication with calling service. - New API
Message.isContentDecrypted: Bool
to denote if the content of the message is decrypted. - New API
CallHistoryRecord.isMissedCall: Bool
to denote if a CallHistoryRecord is a missed call. - New API
Phone.connectPhoneServices(completionHandler: @escaping (Result<Void>) -> Void)
to connect from the server for CallingType.WebexCalling and CallingType.WebexForBroadworks. - New API
Phone.disconnectPhoneServices(completionHandler: @escaping (Result<Void>) -> Void)
to disconnect from the server for CallingType.WebexCalling and CallingType.WebexForBroadworks. - New API
Phone.setPushTokens(bundleId: String, deviceId: String, deviceToken: String, voipToken: String)
to set the tokens for the notification. - New API
Phone.processPushNotification(message: String, completionHandler: @escaping (Error?) -> Void)
to process the push notification to trigger incoming call callback. - New API
Call.isWebexCallingOrWebexForBroadworks: Bool
to denote if this call is Webex or Broadworks call. - New API
Call.isAudioOnly: Bool
to denite if this is an audio-only call. - New API
Call.directTransferCall(toPhoneNumber: String, completionHandler: @escaping (Error?) -> Void)
to directly transfer a call. - New API
Call.switchToVideoCall(completionHandler: @escaping (Result<Void>) -> Void)
to switch the current Webex Calling call to a Video call. - New API
Call.switchToAudioCall(completionHandler: @escaping (Result<Void>) -> Void)
to switch the current Webex Calling call to an Audio-only call. - New API
SpaceClient.isSpacesSyncCompleted: Bool
to denote if syncing latest conversations to local data warehouse is complete. - New callback
SpaceClient.onSyncingSpacesStatusChanged: ((_ isSyncInProgress: Bool) -> Void)?
to notify when syncing status for spaces changes. - New callback
Webex.onInitialSpacesSyncCompleted: (() -> Void)?
to denote if syncing latest conversations to local data warehouse is complete. - Added new enum
UCLoginFailureReason
to denote the failure reason while logging in to CUCM. - Added new enum
PhoneConnectionError
to denote the error while connecting to phone services. - Added new enum
CallingType
to represent calling feature type enabled for current logged in user.
- In
WebexUCLoginDelegate.onUCLoginFailed
failureReason field is added. - FIXED - Crash while applying Virtual Background
- FIXED - Intermittent crash during calling
- Deprecated API
setCUCMCredential(username: String, password: String)
instead usesetCallServiceCredential(username: String, password: String)
Released on 30 September, 2022.
- New struct
Captcha
to represent the Captcha object. - New struct
Breakout
A data type to represent the breakout. - New struct
BreakoutSession
A data type to represent the breakout session. - New case
forbidden
in enumCreatePersonError
,UpdatePersonError
- Three new cases
invalidPassword(reason: String)
,captchaRequired(captcha: Phone.Captcha)
,invalidPasswordWithCaptcha(captcha: Phone.Captcha)
to enumWebexError
- New API
Phone.isRestrictedNetwork: Bool
to check whether the device is in a restricted network. - New API
Call.joinBreakoutSession(session: BreakoutSession)
to join the Breakout Session manually by passing theBreakoutSession
if host has enabled allow join session later. - New API
Call.returnToMainSession()
to return to main session. - New API
Phone.refreshMeetingCaptcha(completionHandler: @escaping (Result<Captcha>) -> Void)
to refresh the Captcha object to get a new Captcha code. - New API
Call.correlationId: String?
to get the correlationId for that particular call. - New API
MediaOption.captchaId: String?
to get & set unique id for the captcha. - New API
MediaOption.captchaVerifyCode: String?
to get & set captcha verification code to be entered by user. - New API
Space.isExternallyOwned: Bool?
It will be true If a space is owned/created by non-org/external user. - New callback
onRestrictedNetworkStatusChanged: ((_ status: Bool) -> Void)?
to monitor restricted network status changes. - New callback
Call.onBreakoutErrorHappened: ((BreakoutError) -> Void)?
to notify when any breakout api returns error. - New callback
Call.onBreakoutUpdated: ((Breakout) -> Void)?
to notify when Breakout is updated. - New callback
Call.onBroadcastMessageReceivedFromHost: ((String) -> Void)?
to notify when host broadcast the message to the session. - New callback
Call.onHostAskingReturnToMainSession: (() -> Void)?
to notify when host is asking participants to return to main meeting. - New callback
Call.onJoinableSessionListUpdated: (([BreakoutSession]) -> Void)?
to notify when list of join breakout session changes. - New callback
Call.onJoinedSessionUpdated: ((BreakoutSession) -> Void)?
to notify when joined Breakout session is updated. - New callback
Call.onReturnedToMainSession: (() -> Void)?
to notify when returned to main session. - New callback
Call.onSessionClosing: (() -> Void)?
to notify when Breakout session is closing. - New callback
Call.onSessionEnabled: (() -> Void)?
to notify when Breakout session is enabled. - New callback
Call.onSessionJoined: ((BreakoutSession) -> Void)?
to notify when Breakout session is joined. - New callback
Call.onSessionStarted: ((Breakout) -> Void)?
to notify when Breakout session is started.
roles
,licenses
andsiteUrls
fields are added to thePerson
class.- In
Person.update
displayName field is not optional now
Released on 2022-08-24
- Added new API
call.setMediaStreamCategoryC(participantId: String, quality: MediaStreamQuality)
to pin the participant's tream with the specified params if it does not already exist. Otherwise, update the pinned participant's stream with the specified params - Added new API
call.removeMediaStreamCategoryC(participantId: String)
to remove the pinning of a participant's stream - Added new API
Webex.startUCServices()
to start login process of CUCM - Added new API
Webex.retryUCSSOLogin()
in case UC sso login expires or requires a retry - Added new API
Webex.forceRegisterPhoneServices()
to handleRegisteredElsewhere
error - Added new struct
CallHistoryRecord
- Added new callback
onUCSSOLoginFailed(failureReason: UCSSOFailureReason)
to notify app when SSO login fails.
- Added Support for message with video and thumbnail
- Post message api was returning the message object with mentions as empty array
- List message api bug fixes to return correct data before a provided date or time and honouring max value
- Fixed a condition where the sdk crashes because of unguarded null pointer access on logout
- Fixed an issue with space ID encoding when a meeting is started
- Fixed CUCM login for SSO authentication
- Fixed CUCM call history
- Renamed callback
showUCSSOLoginView(to url: String)
toloadUCSSOView(to url: String)
- Refactored
Phone.getCallHistory()
to returnCallHistoryRecord
s instead ofSpace
s
Released on 2022-06-07
- Added new enum
MediaStream
to denote the Media stream - Added new enum
MediaStreamQuality
to denote the Media stream quality - Added new enum
MediaStreamChangeEventType
to denote the MediaStreamChangeEvent type - Added new enum
MediaStreamChangeEventInfo
to denote the changed event information - Added new API 'call.mediaStreams' to get all opened auxiliary streams
- Added new API
call.onMediaStreamAvailabilityListener
to notify when media stream is available/unavailable - Added new API
stream.setOnMediaStreamInfoChanged
to notify when media stream info is change - Added new API
call.setMediaStreamCategoryA(duplicate: Bool, quality: MediaStreamQuality)
to add the Active Speaker stream with the specified params if it does not already exist. Otherwise, update the Active Speaker stream with the specified params. - Added new API
call.setMediaStreamsCategoryB(numStreams: Int, quality: MediaStreamQuality)
to set all category B streams to the specified params - Added new API
call.removeMediaStreamCategoryA()
to remove the Active Speaker stream - Added new API
call.removeMediaStreamsCategoryB()
to remove all category B streams
Support for 1080p video resolution
webex.phone.videoMaxTxBandwidth = Phone.DefaultBandwidth.maxBandwidth1080p.rawValue
to capture Full HD resolution videowebex.phone.videoMaxRxBandwidth = Phone.DefaultBandwidth.maxBandwidth1080p.rawValue
To receive Full HD resolution video- FIXED - VBG issues
- FIXED - postToPerson api issue fixed for JWT users
Released on 2022-04-19
- Added new enum
MediaQualityInfo
to denote the media quality - Added new API
Call.onMediaQualityInfoChanged()
to notify when media quality is changed - Added new API
Message.Text.html(html: String) -> Text
- Added new API
Message.Text.markdown(markdown: String) -> Text
- Fixed - Crash when remote user starts or stops sharing
- Fixed - Call pipeline improvement
- Fixed - List messages before messageId not returning messages
- Fixed - Text object type incorrect on received messages-
- Fixed - Message sender details incorrect in integration use case
- Sending multiple formats of text in the same message is not supported. Below Text constructors are deprecated
Message.Text.html(html: String, plain: String? = nil) -> Text
Message.Text.markdown(markdown: String, html: String, plain: String? = nil) -> Text
Released on 2022-02-15
- Added new API
Call.wxa
for Webex assistant and real time transcription controls - Added new API
Call.cameraTorchMode
- Added new API
Call.cameraFlashMode
- Added new API
Call.zoomFactor
- Added new API
Call.exposureDuration
- Added new API
Call.exposureISO
- Added new API
Call.exposureTargetBias
- Added new API
Call.setCameraFocusAtPoint(:pointX:pointY)
- Added new API
Call.setCameraCustomExposure(:duration:iso)
- Added new API
Call.setCameraAutoExposure(:targetBias)
- Added new API
Call.takePhoto()
- Enhanced documentation coverage
- Decoupled WebexBroadcastExtensionKit from WebexSDK
- Fixed thumbnail for high resolution images not loading
- Fixed decoding of special characters in urlencoded Guest issuer JWT token
- Made exp field as optional in Guest Issuer JWT
- Fixed callback not being fired for deleting self membership from space
- Fixed an issue with fetching inter-cluster team memberships
Released on 2021-11-30
- Added new API
Call.forceSendingVideoLandscape(forceLandscape:completionHandler:)
to set local video view in landscape
- Added new field
locusUrl
toCall
struct
Released on 2021-10-18
- Added new
TokenAuthenticator
for authenticating with external guest access token - Added VirtualBackground support
- Added new API
Phone.isVirtualBackgroundSupported
to check whether your device supports virtual background feature - Added new API
Phone.virtualBackgroundLimit
to get/set the limit of custom virtual background - Added new API
Phone.fetchVirtualBackgrounds(:completionHandler)
API to get all virtual backgrounds - Added new API
Phone.addVirtualBackground(:image:completionHandler)
API to add new virtual background image - Added new API
Phone.removeVirtualBackground(:background:completionHandler)
API to delete selected virtual background item - Added new API
Phone.applyVirtualBackground(:background:mode:completionHandler)
API to apply virtual background for 'Preview' or 'Call' - Added new API
Call.onCpuHitThreshold()
to notify when CPU reaches threshold - Added new struct
Phone.VirtualBackground
to denote the virtual background item - Added new struct
Phone.VirtualBackgroundThumbnail
to denote the thumbnail of virtual background item - Added new enum
Phone.VirtualBackgroundType
to denote the type of virtual background item among None, Blur and Custom - Added new enum
Phone.VirtualBackgroundMode
to denote the mode for applying virtual background for Preview or Call - Added new enum
FetchVirtualBackgroundError
- Added new enum
AddVirtualBackgroundError
- Added new enum
RemoveVirtualBackgroundError
- Added new enum
ApplyVirtualBackgroundError
- Added new API
CalendarMeetings.list(:startDate:endDate:callback)
to list all calendar meetings in a date range - Added new API
CalendarMeetings.get(:meetingId:callback)
to fetch a single calendar meeting by meetingId - Added new struct
Meeting
to represent a Calendar Meeting item - Added new struct
MeetingInvitee
to represent a person invited to a calendar meeting - Added new enum
InviteeResponse
to represent the response of a meeting invitee - Added new API
CalendarMeetings.onEvent
to register a callback to be fired when a calendar meeting event occurs - Added new enum
CalendarMeetingEvent
to represent a scheduled calendar meeting event
- Updated WME to 11.9.0.9
- Added new field
meetingId
toCall
struct - Added public constructor for
RemoteFile
struct - Added public constructor for
RemoteFile.Thumbnail
struct
Released on 2021-08-16
- Added FedRAMP support
- Added new API
OAuthAuthenticator.getAuthorizationUrl(:completionHandler)
to get a valid authorization URL to initate OAuth - Added new API
OAuthAuthenticator.authorize(:oauthCode:completionHandler)
to authorize with auth code from OAuth first leg - Added new API
Phone.getServiceUrl(:ServiceUrlType)
API - Added back scope argument to
OAuthAuthenticator
. This serves to add additional scopes that the developer might want the access token to have. Now developers have to providespark:all
scope always to this argument - Added new API
Call.isSpaceMeeting
to denote the call is space backed meeting type - Added new API
Call.isSelfCreator
to denote if self is the initiator of the call - Added new API
Call.hasAnyoneJoined
to denote if anyone joined the meeting, excluding self - Added new API
Call.isPmr
to denote the call is a personal meeting room - Added new API
Call.isMeeting
to differentiate between meetings and calls - Added new API
Call.isScheduledMeeting
to differentiate between scheduled meetings and ad-hoc meetings - Added new enum
Base64EncodeError
- Added new enum
TokenLoginError
- Added new
case .personNotFound
toDeletePersonError
enum - Added new
case .badRequest
to following enums:ListMembershipsError
,ListTeamMembershipResult
,DeleteSpaceResult
,ListWebhooksResult
,GetWebhookByIdResult
,CreateWebhookResult
,UpdateWebhookByIdResult
andDeleteWebhookByIdResult
base64Encode(resourceType: ResourceType, resource: String, completionHandler: @escaping (String, SpaceApiErrorInfo, Bool) -> Void)
tobase64Encode(resourceType: ResourceType, resource: String, completionHandler: @escaping (Result<String>) -> Void)
- The completion handlers for the following methods have been updated to accept a Result object instead of bare token string:
Authenticator.accessToken(:completionHandler)
,JWTAuthenticator.authorizedWith(:jwt:completionHandler)
,JWTAuthenticator.accessToken(:completionHandler)
,JWTAuthenticator.refreshToken(:completionHandler)
,OAuthAuthenticator.accessToken(:completionHandler)
- Removed
Phone.connected
API - Removed
SpaceApiErrorInfo
struct
Released on 2021-05-24
- Major rewrite of the SDK.
- Ability to make calls via CUCM.
- Receive push notification for incoming CUCM calls.
- Added new API
Webex.setUCDomainServerUrl(ucDomain: String, serverUrl: String )
for CUCM - Added new API
Webex.setCUCMCredential(username: String, password: String )
for CUCM - Added new API
Webex.getUCSSOLoginView()
for CUCM SSO login - Added new API
Webex.ucCancelSSOLogin()
to cancel CUCM SSO login - Added new API
Webex.isUCLoggedIn()
for CUCM - Added new API
Webex.getUCServerConnectionStatus()
for CUCM - Added new
Webex.initialize
that sets up the SDK and automatically logs in a previously logged in user - Added new API
Webex.base64Encode(resourceType: ResourceType, resource: String, completionHandler: handler)
to encode UUID as Base64 - Added new API
Webex.base64Decode(encodedResource: String)
to decode Base64 to Resource - Added new API
SpaceClient.filter
to fetch person and bots based on the given query - Added new API
Phone.getCallHistory
to get collection of Space which contains call history of One to One Spaces as well as Group type Spaces - Added new API
Webex.getLogFileUrl
to get file URI of where all the logs are stored - Added new struct
Message.MentionPos
to describe the position of a Mention - Added new property
Call.schedules
to get the the schedules of a call if the call has one or more schedules. - Added
Call.startAssociatedCall()
for CUCM calls - Added
CallAssociationType
enum to indicate whether call is of type Transfer or merge - Added
Call.transferCall()
for CUCM calls - Added
Call.mergeCall()
for CUCM calls - Added
Call.holdCall()
for CUCM calls - Added
Call.isOnHold()
for CUCM calls - Added new API
Call.onFailed
to notify that a call has failed - Added new API
Call.onInfoChanged()
to notify when call object changes - Added new API
Call.setParticipantAudioMuteState()
to mute particular participant - Added new API
Call.setAllParticipantAudioMuteState()
to control mute state of all participants - Added new property
CallSchedule.organzier
to get organizer of a scheduled call - Added new property
CallSchedule.meetingId
to get meetingId of a scheduled call - Added new property
CallSchedule.link
to get link of a scheduled call - Added new property
CallSchedule.subject
to get subject of a scheduled call - Added new struct
Resource
to represent a Resource - Added new enum
ResourceType
to represents the type of a Resource - Added new delegate
WebexUCLoginDelegate
to support UC login state changes - Added
refreshToken()
to JWTAuthenticator - Introduced new Enum
OAuthResult
- Introduced new Enum
NotificationCallType
to distinguish between incoming webex calls and CUCM calls - Added
isGroupCall
API - Added callEnded in DisconnectReason in onDisconnected event
- Added
Phone.getCallIdFromNotificationId
- Moved getCallHistory from Webex class to Phone class
- Added
Webex.enableConsoleLogger()
to enable/disable console logging - Added
Webex.logLevel
API to set the log levels - Added
CallEnded
toCall.DisconnectReason
- Transitioned from using results wrapped in a
ServiceResponse
to justResult
Phone.dial
has been modified to support dialing CUCM numbersOAuthAuthenticator.authorize(parentViewController: UIViewController, completionHandler: @escaping ((_ success: Bool) -> Void))
changed toOAuthAuthenticator.authorize(parentViewController: UIViewController, completionHandler: ((_ result: OAuthResult) -> Void)?)
JWTAuthenticator.authorizedWith(:jwt)
changed toJWTAuthenticator.authorizedWith(:jwt:completionHandler)
OAuthAuthenticator.authorize(oauthCode: String, completionHandler: ((_ success: Bool) -> Void)? = nil)
changed toOAuthAuthenticator.authorize(oauthCode: String, completionHandler: ((_ result: OAuthResult) -> Void)? = nil)
Mention.Person
andMention.all
now acceptMentionPos
instance
- SSO Authenticator
- Removed
Phone.register()
,Phone.registered
&Phone.deregister()
iOSBroadcastingEvent
- Removed all third party pod dependencies
- Removed
refreshToken()
from Authenticator protocol - Removed
OAuthAuthenticatorDelegate
- Removed deprecated field
MediaOption.layout
- Removed deprecated API
MessageClient.post(personEmail:text:files:queue:completionHandler:)
- Removed deprecated API
MessageClient.post(personId:text:files:queue:completionHandler:)
- Removed deprecated API
MessageClient.post(spaceId:text:mentions:files:queue:completionHandler:)
- Removed
Logger
. You no longer have to implement this as it's already implemented internally - Removed
Webex.logger
in favor ofWebex.getLogFileURL
- Removed
applicationGroupIdentifier
param fromMediaOption.audioVideoScreenShare()
. Instead this needs to be a present in your app'sInfo.plist
with key asGroupIdentifier
and value as your app's GroupIdentifier - Removed
Message.update()
as you no longer have to update the Message instance manually.
Released on 2021-04-30.
- Support Multi-stream.
- Support message edit.
- Support meeting with 11 digits meeting number.
- Add Phone.enableBackgroundConnection( ) function.
- Removed email from CallMembership, added displayName for CallMembership.
- Fix video automatically unmute issue after swithing from background.
- Fix message encryption failures.
- Fix certain events are not getting triggered after Switching network.
- Fix sending video issue in 1:1 calls.
Released on 2020-12-14.
- Support to notify a space call status through SpaceObserver.
- Support to notify muted by host during a space call.
- Support to enable Background Noise Removal(BNR), and switch between HP(High Performance) and LP(Low Power) mode.
- Not sending sensitive headers for unknown site.
- Update Wme.framework.
- Update Alamofire dependency to 5.2.0
- Update ObjectMapper dependency to 4.2.0
- Remove AlamofireObjectMapper dependency.
- Fix SpaceClient.listWithActiveCalls() cannot show spaces cross-cluster.
- Fix App hangs when trying to record a video via UIImagePickerController.
Released on 2020-9-28.
- Support iOS 14 and XCode 12.
- Support for incoming call notifications for scheduled sapce call.
- Support for being notified of the end of a space call.
- Support to join password-protected meetings.
- Add a new API
Call.videoLayout
to change the video layout during a call. - Add a new API
Call.remoteVideoRenderMode
to specify how the remote video adjusts its content to be render in a view. - Add a new API
Phone.AdvancedSettings.videoMaxTxFPS
to change the max sending fps for video. - Add a new API
Phone.cancel
to cancel the currently outgoing call that has not been connected. - Add a new API
SpaceClient.listWithActiveCalls
to get a list of spaces that have ongoing call. - Add a new API
Message.isAllMentioned
to check if the message mentioned everyone in space. - Add a new API
Message.mentions
to get all people mentioned in the message.
- Improved video and audio quality
- API enhancements to improve bandwidth control.
- Update Wme.framework to 10.8.5.
- Update Starscream.framework to 4.0.4.
- Fixed unable to remove a Webex object once it has been created.
- Fixed switch Camera Error
- Fixed user in EMEAR org cannot message and call the user in US org.
- Fixed could not get thumbnail of the WORD, POWERPOINT, EXCEL and PDF file in the message.
- Fixed video received shows as zoomed and cropped when in iPhone/iPad is in portrait mode.
- Fixed Participant's video in video call is black.
Released on 2020-3-30.
- Support for threaded messaging.
- Support compose and render the active speaker video with other attendee video and all the names in one single view.
- Support single, filmstrip and grid layouts for the composed video view.
- Update Wme.framework.
- Update Starscream.framework.
- Remove deprecated Apple UIWebView API.
Released on 2020-1-15.
- Support to join the meeting where lobby is enabled.
- Support to let-in waiting people from looby to the meeting.
- Fixed screen share didn't work.
- Fixed loud speaker didn't work.
Released on 2019-09-30.
- Add API to receive membership created/deleted/updated/seen events.
- Add API to receive room created/updated events.
- Add API to get last activity status of a space.
- Add API to get a list of last activity status of all spaces.
- Add API to get a list of read status of all memberships in a space.
- Add API to get space meeting details.
- Add API to send read receipt for message.
- Add API to get the lastActivity of person.
- Add API to get the token expiration date for JWTAuthenticator.
- Support iOS 13.
- Support Swift5 and Xcode11.
- Update Wme.framework.
- Reduce latency when list messages.
- Fixed camera shows my video as green.
Released on 2019-06-07.
- Improve API docs.
- Fixed Broadcast Extension Kit cannot find frameworks.
Released on 2018-10-31.
- SDK rebranding.
- Support multi streams in space call.
- Rename room to space.
- Upgrade media engine to fix crash issue on CallKit.
- Fixed crash issue on media cluster discovery.
- Fixed call event confusion in the large meeting.
- Refactor code to improve code quality.
Released on 2018-09-29.
- Support Swift4.2 and Xcode10.
- Fixed Activity roomtype always be 'group'.
- Remove Seu umbrella warning.
- Fixed Spark call crashing on iOS when using CallKit.
- Speed up reachability check.
Released on 2018-05-15.
- Support screen sharing for both sending and receiving.
- A new API to refresh token for authentication.
- Two properties in Membership: personDisplayName, personOrgId.
- Support real time message receiving.
- Support message end to end encription.
- A few new APIs to do message/file end to end encryption, Mention in message, upload and download encrypted files.
- Five properties in Person: nickName, firstName, lastName, orgId, type.
- Three functions to create/update/delete a person for organization's administrator.
- Support room list ordered by either room ID, lastactivity time or creation time.
- A new property in TeamMembership: personOrgId.
- Two new parameters to update webhook : status and secret.
- Fixed ocassional crash when switching between video call and audio call when CallKit is used.
- Fixed video freeze when iOS SDK makes a call to JavaScript SDK.
- Fixed crash issue when invoking Phone.requestMediaAccess function from background thread.
- Fixed wrong call type for room calling when there are only two people in the call.
Released on 2018-1-12.
SSO Authenticator
Released on 2017-10-13.
Released on 2017-05-23.
Released on 2016-11-29.
- Support swift 3.0
Released on 2016-07-25.
- Travis CI
- Media engine refactor
- Use NSDate for object mapper
Released on 2016-07-11.
- Add Teams and Team Memberships API.
- Support DTMF feature.
- Fix Message creation timestamp bug.
- Fix Room type bug.
Released on 2016-06-23.
- Suppport customized notification center (CallNotificationCenter/PhoneNotificationCenter) based on protocol (CallObserver/PhoneObserver), to avoid NSNotificationCenter flaws:
- Pass parameters via a userInfo dicionary, so type info is lost.
- Use constant string for notification name and parameter key name. It's hard to maintain and document.
- Must deregister notifications, if not, it may cause crash.
- Add remote video/audio mute/unmute notifications. New API CallObserver.remoteMediaDidChange() is introduced.
- Support audio-only call. MediaOption parameter is introduced for it in API Phone.Dail()/Call.Answer().
- Support media cluster discovery.
- Support video license activation.
- Enable hardware acceleration, and support 720p video quality.
- Support toggling receiving audio and video. New API Call.toggleReceivingVideo()/Call.toggleReceivingAudio() is introduced for it.
- Refactor storage code logic. defaultFacingMode/defaultLoudSpeaker in Spark.Phone are not persistent, so after restart app, these setting doesn't exist.
- Fix logging performance issue.
- Fix missing incoming call issue when start APP from not running status, or switch APP to foreground from background.
- Update Wme.framework, to fix SIGPIPE signal during debug mode.
Released on 2016-05-25.
- Use CocoaLumberjack to print SDK log. Introduce new API Spark.toggleConsoleLogger(enable: Bool) to enable/disable SDK console log. SDK console log is enabled by default.
- Introduce Apache License for SDK.
- Refactor web socket code logic, to fix some potential issue.
- Update Wme.framework.
Released on 2016-05-19.
- Add CHANGELOG.
- Support refreshing token.
- Refine OAuth flow logic.
Released on 2016-05-12.
- Initial release of Cisco Spark SDK.