├── .gitignore ├── CHANGELOG.md ├── LICENSE └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Mac OS X 2 | .DS_Store 3 | 4 | # Xcode 5 | 6 | ## Build generated 7 | build/ 8 | DerivedData 9 | Output/ 10 | 11 | ## Various settings 12 | *.pbxuser 13 | !default.pbxuser 14 | *.mode1v3 15 | !default.mode1v3 16 | *.mode2v3 17 | !default.mode2v3 18 | *.perspectivev3 19 | !default.perspectivev3 20 | xcuserdata 21 | 22 | ## Other 23 | *.xccheckout 24 | *.moved-aside 25 | *.xcuserstate 26 | *.xcscmblueprint 27 | 28 | ## Pod 29 | Podfile.lock 30 | Pods 31 | *.xcworkspace 32 | 33 | ## Obj-C/Swift specific 34 | *.hmap 35 | *.ipa 36 | 37 | ## Playgrounds 38 | timeline.xctimeline 39 | playground.xcworkspace 40 | 41 | # Swift Package Manager 42 | .build/ 43 | 44 | # Carthage 45 | Carthage/Build 46 | 47 | # Commit comments 48 | CHANGELOG_COMMIT.text 49 | 50 | Docs/ 51 | Frameworks/External 52 | 53 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | All notable changes to this project will be documented in this file. 3 | 4 | #### 3.15.0 Releases 5 | - `3.15.0` Releases - [3.15.0](#3150) 6 | 7 | #### 3.14.0 Releases 8 | - `3.14.0` Releases - [3.14.0](#3140) 9 | 10 | #### 3.13.0 Releases 11 | - `3.13.0` Releases - [3.13.0](#3130) 12 | 13 | #### 3.12.0 Releases 14 | - `3.12.0` Releases - [3.12.0](#3120) 15 | 16 | #### 3.11.3 Releases 17 | - `3.11.3` Releases - [3.11.3](#3113) 18 | 19 | #### 3.11.2 Releases 20 | - `3.11.2` Releases - [3.11.2](#3112) 21 | 22 | #### 3.11.1 Releases 23 | - `3.11.1` Releases - [3.11.1](#3111) 24 | 25 | #### 3.11.0 Releases 26 | 27 | - `3.11.0` Releases - [3.11.0](#3110) 28 | 29 | #### 3.10.1 Releases 30 | 31 | - `3.10.1` Releases - [3.10.1](#3101) 32 | 33 | #### 3.10.0 Releases 34 | 35 | - `3.10.0` Releases - [3.10.0](#3100) 36 | 37 | #### 3.9.2 Releases 38 | 39 | - `3.9.2` Releases - [3.9.2](#392) 40 | 41 | #### 3.9.1 Releases 42 | 43 | - `3.9.1` Releases - [3.9.1](#391) 44 | 45 | #### 3.9.0 Releases 46 | 47 | - `3.9.0` Releases - [3.9.0](#390) 48 | 49 | #### 3.8.3 Releases 50 | 51 | - `3.8.3` Releases - [3.8.3](#383) 52 | 53 | #### 3.8.2 Releases 54 | 55 | - `3.8.2` Releases - [3.8.2](#382) 56 | 57 | #### 3.8.1 Releases 58 | 59 | - `3.8.1` Releases - [3.8.1](#381) 60 | 61 | #### 3.8.0 Releases 62 | 63 | - `3.8.0` Releases - [3.8.0](#380) 64 | 65 | #### 3.7.0 Releases 66 | 67 | - `3.7.0` Releases - [3.7.0](#370) 68 | 69 | #### 3.6.0 Releases 70 | 71 | - `3.6.0` Releases - [3.6.0](#360) 72 | 73 | #### 3.5.0 Releases 74 | 75 | - `3.5.0` Releases - [3.5.0](#350) 76 | 77 | #### 3.4.0 Releases 78 | 79 | - `3.4.0` Releases - [3.4.0](#340) 80 | 81 | #### 3.3.0 Releases 82 | 83 | - `3.3.0` Releases - [3.3.0](#330) 84 | 85 | #### 3.2.1 Releases 86 | 87 | - `3.2.1` Releases - [3.2.1](#321) 88 | 89 | #### 3.2.0 Releases 90 | 91 | - `3.2.0` Releases - [3.2.0](#320) 92 | 93 | #### 3.1.0 Releases 94 | 95 | - `3.1.0` Releases - [3.1.0](#310) 96 | 97 | #### 3.0.0 Releases 98 | 99 | - `3.0.0` Releases - [3.0.0](#300) 100 | 101 | #### 2.8.0 Releases 102 | 103 | - `2.8.0` Releases - [2.8.0](#280) 104 | 105 | #### 2.7.0 Releases 106 | 107 | - `2.7.0` Releases - [2.7.0](#270) 108 | 109 | #### 2.6.0 Releases 110 | 111 | - `2.6.0` Releases - [2.6.0](#260) 112 | 113 | #### 2.5.0 Releases 114 | 115 | - `2.5.0` Releases - [2.5.0](#250) 116 | 117 | #### 2.4.0 Releases 118 | 119 | - `2.4.0` Releases - [2.4.0](#240) 120 | 121 | #### 2.3.0 Releases 122 | 123 | - `2.3.0` Releases - [2.3.0](#230) 124 | 125 | #### 2.1.0 Releases 126 | 127 | - `2.1.0` Releases - [2.1.0](#210) 128 | 129 | #### 2.0.0 Releases 130 | 131 | - `2.0.0` Releases - [2.0.0](#200) 132 | 133 | #### 1.4.1 Releases 134 | 135 | - `1.4.1` Releases - [1.4.1](#141) 136 | 137 | #### 1.4.0 Releases 138 | 139 | - `1.4.0` Releases - [1.4.0](#140) 140 | 141 | #### 1.3.1 Releases 142 | 143 | - `1.3.1` Releases - [1.3.1](#131) 144 | 145 | #### 1.3.0 Releases 146 | 147 | - `1.3.0` Releases - [1.3.0](#130) 148 | 149 | #### 1.2.0 Releases 150 | 151 | - `1.2.0` Releases - [1.2.0](#120) 152 | 153 | #### 1.1.0 Releases 154 | 155 | - `1.1.0` Releases - [1.1.0](#110) 156 | 157 | #### 1.0.0 Releases 158 | 159 | - `1.0.0` Releases - [1.0.0](#100) 160 | 161 | #### 0.9.149 Releases 162 | 163 | - `0.9.149` Releases - [0.9.149](#09149) 164 | 165 | #### 0.9.148 Releases 166 | 167 | - `0.9.148` Releases - [0.9.148](#09148) 168 | 169 | #### 0.9.147 Releases 170 | 171 | - `0.9.147` Releases - [0.9.147](#09147) 172 | 173 | #### 0.9.146 Releases 174 | 175 | - `0.9.146` Releases - [0.9.146](#09146) 176 | 177 | #### 0.9.137 Releases 178 | 179 | - `0.9.137` Releases - [0.9.137](#09137) 180 | 181 | ## [3.15.0](https://github.com/webex/webex-ios-sdk/releases/tag/3.15.0) 182 | Released on **21 February, 2025**. 183 | ### Added 184 | - New SDK variant “WebexSDK/Message” released, a light weight SDK for Messaging. 185 | ### Updated 186 | - Fixed: Enhancements and bug fixes for the audio pipeline during calls, addressing scenarios such as the initial call and call swapping. 187 | - Fixed: Changed the default media encoding service for meetings. 188 | 189 | ## [3.14.0](https://github.com/webex/webex-ios-sdk/releases/tag/3.14.0) 190 | Released on **13 November, 2024**. 191 | ### Added 192 | - New Enum `SpeechEnhancementResult` to represent the result of speech enhancement operation. 193 | - New API added `Phone.useLegacyReceiverNoiseRemoval(useLegacy: Bool)` to enable legacy receiver side noise removal. This will disable the new receiver side speech enhancement. 194 | - New API added `Phone.isReceiverSpeechEnhancementEnabled: Bool` to check if receiver side speech enhancement is enabled by default. 195 | - New API added `Phone.enableSpeechEnhancement(enable: Bool, completionHandler: @escaping (Result) -> Void)` to enable or disable speech enhancement for all calls. 196 | - New API added `Call.isReceiverSpeechEnhancementEnabled: Bool` to check if speech enhancement is enabled for the call. 197 | - New API added `Call.enableSpeechEnhancement(enable: Bool, completionHandler: @escaping (Result) -> Void)` to enable or disable speech enhancement for the call. 198 | - New error message `NonExistentCallPull` to represent the error when trying to pull a non-existent call by dialing *11. 199 | - New enum values `InternalError`, `UserNotFound`, `UserPending`, `UserVerificationFailed`, `UserNeedsReactivation` when user logs in via OAuth flow. 200 | ### Updated 201 | - Fixed: Issue with Move meeting from SDK to other clients. 202 | 203 | ## [3.13.0](https://github.com/webex/webex-ios-sdk/releases/tag/3.13.0) 204 | Released on **21 Aug, 2024**. 205 | ### Added 206 | - New Enum `RecordAudioDumpResult` to represent error while doing audio dump related operations. 207 | - New API added `Call.isRecordingAudioDump` to check if the audio dump is being recorded for ongoing meeting/call. 208 | - New API added `Call.canStartRecordingAudioDump(completionHandler: @escaping (Error?) -> Void)` to check if the audio dump can be recorded for ongoing meeting/call. 209 | - New API added `Call.startRecordingAudioDump(completionHandler: @escaping (Error?) -> Void)` to start recording the audio dump for ongoing meeting/call. 210 | - New API added `Call.stopRecordingAudioDump(completionHandler: @escaping (Error?) -> Void)` to stop recording the audio dump. 211 | ### Fixed 212 | - Fixed a bug related to deleting virtual background which is set for preview. 213 | 214 | ## [3.12.0](https://github.com/webex/webex-ios-sdk/releases/tag/3.12.0) 215 | Released on **08 Jul, 2024**. 216 | ### Added 217 | - New Class `CameraDeviceManager` to manage the external camera related operations. 218 | - New Struct `Camera` to represent camera devices either built-in or externally attached. 219 | - New Enum `CompanionMode` to set the companion mode for Move Meeting. 220 | - New Enum `UpdateSystemCameraResult` to represent error while updating system preferred camera. 221 | - New Callback `Call.onMoveMeetingFailed: (() -> Void)?` when an attempt to move meeting fails for the call. 222 | - New Callback `CameraDeviceManager.onExternalCameraDeviceConnected: ((_ camera: Camera) -> Void)` when external camera is connected. 223 | - New Callback `CameraDeviceManager.onExternalCameraDeviceDisconnected: (() -> Void)?` when external camera is disconnected. 224 | - New API added `Phone.updateSystemPreferredCamera(camera: Camera, completionHandler: @escaping (Result) -> Void)` to update the system preferred camera. 225 | - New API added `Phone.getListOfCameras() -> [Camera]` to get the list of all available cameras. 226 | - New API added `Phone.isMoveMeetingSupported(meetingId : String) -> Bool` to check if the move meeting feature is supported for the given meeting. 227 | ### Updated 228 | - `isOngoingMeeting` and `eventId` fields are added to the `Meeting` struct. 229 | - `companionMode` field added to the `MediaOption` struct. 230 | 231 | # [3.11.3](https://github.com/webex/webex-ios-sdk/releases/tag/3.11.3) 232 | Released on **6 Jun, 2024**. 233 | ### Added 234 | - The dial & dialPhoneNumber APIs will have the error description in case of failure. 235 | - Access token invalidation or expiry will result in the SDK APIs returning Unauthorized error inside the completion handlers. 236 | 237 | ### Updated 238 | - The `Phone.processPushNotification(msg : String, handler: CompletionHandler)` handler to return error in case of any failure. The error object will have the error code and error description. 239 | - Completion handlers returning InternalError will have error descriptions. 240 | 241 | # [3.11.2](https://github.com/webex/webex-ios-sdk/releases/tag/3.11.2) 242 | Released on **7 May, 2024**. 243 | ### Added 244 | - New delegate `WebexAuthDelegate` to receive all authentication related event callbacks. 245 | - New delegate function `onReLoginRequired()` in `WebexAuthDelegate` to notify when user auth token becomes stale or revoked and re login is required. 246 | 247 | # [3.11.1](https://github.com/webex/webex-ios-sdk/releases/tag/3.11.1) 248 | Released on **8 April, 2024**. 249 | ### Updated 250 | - Added iOS Privacy Manifest file. 251 | - H264 prompt is removed for video and screen share flows. 252 | - Made `Webex` class singleton. 253 | - Made `webex.initialize()` method thread safe and added check to avoid multiple initializations. 254 | - Fixed: Call Failed issue during rejoin after host ends the meeting for all and starts again. 255 | 256 | ## [3.11.0](https://github.com/webex/webex-ios-sdk/releases/tag/3.11.0) 257 | Released on **13 Feb, 2024**. 258 | ### Added 259 | - New Enum `InviteParticipantError` to represent error while adding a participant to the call. 260 | - New Enum `MakeHostError` to represent error while making a participant host in the call. 261 | - New Enum `ReclaimHostError` to represent error while reclaiming the host role in the call. 262 | - New API added `Call.inviteParticipant(participant: String, completionHandler: @escaping (Result) -> Void)` to invite a participant to the call. 263 | - New API added `Call.reclaimHost(hostKey: String, completionHandler: @escaping (Result) -> Void)` to reclaim the host role using the host key. 264 | - New API added `Call.makeHost(participantId: String, completionHandler: @escaping (Result) -> Void)` to assign the host role to a participant. 265 | ### Updated 266 | - `isPresenter`,`isCohost` and `isHost` fields are added to the `CallMembership` struct. 267 | - New Enum case `CallError.cannotStartInstantMeeting` to represent error cannot start instant meeting. 268 | - Messaging module removed in size optimized WxC SDK. 269 | ### Fixed 270 | - Added `parent` field in postMessage APIs in MessageClient to reply to a message thread. 271 | 272 | ## [3.10.1](https://github.com/webex/webex-ios-sdk/releases/tag/3.10.1) 273 | Released on **12 Dec, 2023**. 274 | ### Added 275 | - New Struct `ProductCapability` which represents the product capabilities for the logged in user. 276 | - New API added `Person.getProductCapability() -> ProductCapability` to get the supported capability of the current user. 277 | ### Updated 278 | - General improvements and bug fixes. 279 | 280 | ## [3.10.0](https://github.com/webex/webex-ios-sdk/releases/tag/3.10.0) 281 | Released on **16 Oct, 2023**. 282 | ### Added 283 | - New Struct `Presence` which represents Presence info for a person. 284 | - New Struct `PresenceHandle` which represents the contacts whose presence status are being watched. 285 | - New Struct `VoicePushInfo` which represents the caller related information received from VoIP payload. 286 | - New Struct `LanguageItem` represents LanguageItem of ClosedCaption of a call. 287 | - New Struct `ClosedCaptionsInfo` represents ClosedCaptionsInfo of a call. 288 | - New Struct `CaptionItem` represents CaptionItem of ClosedCaption of a call. 289 | - New Enum `AudioOutputMode` options to switch audio output during a call. 290 | - New Enum `PresenceStatus` indicating the Presence status of a person. 291 | - New Enum `SpokenLanguageSelectionError` to represent error for setting current spoken language. 292 | - New Enum `TranslationLanguageSelectionError` to represent error for setting current translation language. 293 | - 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. 294 | - New API added `Person.stopWatchingPresences(presenceHandles: [PresenceHandle])` to stop watching presence status of the list of presence handle that are provided as input. 295 | - New API added `Call.callerNumber: String` caller number of the active WebexCalling or CUCM call. 296 | - New API added `Call.getCurrentAudioOutput() -> AudioOutputMode` to get the current audio output device for the call. 297 | - New API added `Call.setAudioOutput(mode: AudioOutputMode, completion: (Result) -> ())` to set the current audio output device for the call. 298 | - New API added `Call.isClosedCaptionAllowed: Bool` Returns if Closed Caption allowed or not for this `Call`. 299 | - New API added `Call.isClosedCaptionEnabled: Bool` to let you know current state of the closed caption. 300 | - New API added `Call.toggleClosedCaption(enable: Bool, completionHandler: @escaping (Bool) -> Void )` to toggle ClosedCaption on/off for this `Call`. 301 | - New API added `Call.getClosedCaptionsInfo() -> ClosedCaptionsInfo` to get the `ClosedCaptionsInfo` of this `Call`. 302 | - New API added `Phone.isH264LicenseActivated() -> Bool` to indicate the status of H264 license prompt acceptance. 303 | - New API added `Webex.parseVoIPPayload(payload: PKPushPayload) -> VoicePushInfo?` to parses and returns the caller related information from the VoIP notification. 304 | - New Callback added `Call.onClosedCaptionsInfoChanged: ((ClosedCaptionsInfo) -> Void)?` to notify when ClosedCaptionsInfo changes for this `Call`. 305 | - Ability to support assisted transfer when the SDK client already has 2 active calls. 306 | - Subscribing for certain call events via mercury is now supported. 307 | - Optimised WxC Calling only sdk for runtime performance. 308 | 309 | ### Updated 310 | - FIXED: Made `MediaRenderView` optional while setting MediaOption. 311 | - FIXED: activeSpeakerChangedEvent event notified when the active speaker changes in the meeting 312 | 313 | ## [3.9.2](https://github.com/webex/webex-ios-sdk/releases/tag/3.9.2) 314 | Released on **11 Aug, 2023**. 315 | ### Added 316 | - New API added `Phone.dialPhoneNumber(_ address: String, option: MediaOption, completionHandler: @escaping (Result) -> Void)` to dial only phone numbers. 317 | - New API `CallHistoryRecord.isPhoneNumber` to denote if the number dialled in call record was a phone number. 318 | 319 | ### Updated 320 | - FIXED: Enabling preservation of AVRoutePickerView choices for audio/video output in pre-meeting/call screens. 321 | - FIXED: Removed Camera permissions and H264 prompt for audio only flows. 322 | - FIXED: Call failed or meeting failure issue due to mediaTimeout. 323 | 324 | ## [3.9.1](https://github.com/webex/webex-ios-sdk/releases/tag/3.9.1) 325 | Released on **19 June, 2023**. 326 | ### Added 327 | - New API added `Call.externalTrackingId` to get the external tracking id for corresponding call. Applicable only for WxC calls. 328 | - Webhook URL can be set to get incoming WxC calls. 329 | 330 | ### Updated 331 | - FIXED: Self video turning off in case of poor uplink event. 332 | 333 | ## [3.9.0](https://github.com/webex/webex-ios-sdk/releases/tag/3.9.0) 334 | Released on **5 June, 2023**. 335 | #### Added 336 | - New SDK variant `Webex/Wxc`, a light weight SDK for WebexCalling. 337 | - New struct `ShareConfig` a data type to represent the share screen configuration. 338 | - New Callback `Call.onStartRinger: ((RingerType) -> Void)` when a ringer has to be started. 339 | - New Callback `Call.onStopRinger: ((RingerType) -> Void)` when a ringer has to be stopped. 340 | - New Enum `Call.RingerType` for a ringerType to denote the type of tone to be played / stopped. 341 | - New Enum `CallMembership.DeviceType` for device types. 342 | - New Enum `ShareOptimizeType` to represent the OptimiseType for share screen. 343 | - New API `Person.encodedId` to get base64 encoded Id of the person. 344 | - New API `CallMembership.deviceType` to get device type joined by this CallMembership. 345 | - New API `CallMembership.pairedMemberships` to get all memberships joined using deviceType Room. 346 | - New API `Call.isVideoEnabled` to Indicate whether video calling is enabled for the user in Control hub. 347 | - New API `Call.getShareConfig()` to get the share screen optimisation type of the call. 348 | - New Feature to support multiple active Webex calls. 349 | - New Feature to support end-to-end encrypted meetings. 350 | - Authorization code can be set using `call.send(dtmf: String, completionHandler: ((Error?) -> Void)?)` API for Wxc calls. 351 | - New API `Call.receivingNoiseInfo` to get the info object which contains information on Receiving noise removal state. 352 | - New API `Call.enableReceivingNoiseRemoval(shouldEnable: Bool)` to enable or disable receiving noise removal functionality for incoming PSTN calls. 353 | 354 | #### Updated 355 | - Updated `Message.Text.plain`, `Message.Text.html` and `Message.Text.markdown` from internal to public private(set) access. 356 | - Screen sharing now have optimisation options as part of share config in `startSharing()` 357 | - Now FedRamp can be enabled through authenticators. 358 | - Now `DisconnectReason.RemoteCancel` event will be fired when host ends meeting for all or kicked by host. 359 | - FIXED: Unable to connect with bluetooth devices for call issue. 360 | - FIXED: Webex calling failures for certificate issues. 361 | - FIXED : MessagesUpdate callback getting called for internal provisional messages. 362 | - FIXED : MessagesUpdate callback not getting called with decrypted content in some cases, after list message API was called. 363 | 364 | ## [3.8.3](https://github.com/webex/webex-ios-sdk/releases/tag/3.8.3) 365 | Released on **16 Mar, 2023**. 366 | #### Updated 367 | - FIXED - Fixed an issue where the SDK logs not showing in Xcode console. 368 | 369 | ## [3.8.2](https://github.com/webex/webex-ios-sdk/releases/tag/3.8.2) 370 | Released on **17 Feb, 2023**. 371 | #### Updated 372 | - FIXED - Fixed an issue where the SDK wasn't working for Xcode simulators. 373 | 374 | ## [3.8.1](https://github.com/webex/webex-ios-sdk/releases/tag/3.8.1) 375 | Released on **08 Feb, 2023**. 376 | #### Updated 377 | - FIXED - Fixed an issue where the SDK wasn't compiling for Xcode versions below Xcode14. 378 | 379 | ## [3.8.0](https://github.com/webex/webex-ios-sdk/releases/tag/3.8.0) 380 | Released on **25 January, 2023**. 381 | #### Added 382 | - New SDK variant `WebexSDK/Meeting`, a light weighted meeting-only SDK(doesn’t include calling). 383 | - New API `setCallServiceCredential(username: String, password: String)` to set username and password for authentication with calling service. 384 | - New API `Message.isContentDecrypted: Bool` to denote if the content of the message is decrypted. 385 | - New API `CallHistoryRecord.isMissedCall: Bool` to denote if a CallHistoryRecord is a missed call. 386 | - New API `Phone.connectPhoneServices(completionHandler: @escaping (Result) -> Void)` to connect from the server for CallingType.WebexCalling and CallingType.WebexForBroadworks. 387 | - New API `Phone.disconnectPhoneServices(completionHandler: @escaping (Result) -> Void)` to disconnect from the server for CallingType.WebexCalling and CallingType.WebexForBroadworks. 388 | - New API `Phone.setPushTokens(bundleId: String, deviceId: String, deviceToken: String, voipToken: String)` to set the tokens for the notification. 389 | - New API `Phone.processPushNotification(message: String, completionHandler: @escaping (Error?) -> Void)` to process the push notification to trigger incoming call callback. 390 | - New API `Call.isWebexCallingOrWebexForBroadworks: Bool` to denote if this call is Webex or Broadworks call. 391 | - New API `Call.isAudioOnly: Bool` to denite if this is an audio-only call. 392 | - New API `Call.directTransferCall(toPhoneNumber: String, completionHandler: @escaping (Error?) -> Void)` to directly transfer a call. 393 | - New API `Call.switchToVideoCall(completionHandler: @escaping (Result) -> Void)` to switch the current Webex Calling call to a Video call. 394 | - New API `Call.switchToAudioCall(completionHandler: @escaping (Result) -> Void)` to switch the current Webex Calling call to an Audio-only call. 395 | - New API `SpaceClient.isSpacesSyncCompleted: Bool` to denote if syncing latest conversations to local data warehouse is complete. 396 | - New callback `SpaceClient.onSyncingSpacesStatusChanged: ((_ isSyncInProgress: Bool) -> Void)?` to notify when syncing status for spaces changes. 397 | - New callback `Webex.onInitialSpacesSyncCompleted: (() -> Void)?` to denote if syncing latest conversations to local data warehouse is complete. 398 | - Added new enum `UCLoginFailureReason` to denote the failure reason while logging in to CUCM. 399 | - Added new enum `PhoneConnectionError` to denote the error while connecting to phone services. 400 | - Added new enum `CallingType` to represent calling feature type enabled for current logged in user. 401 | 402 | #### Updated 403 | - In `WebexUCLoginDelegate.onUCLoginFailed` failureReason field is added. 404 | - FIXED - Crash while applying Virtual Background 405 | - FIXED - Intermittent crash during calling 406 | 407 | #### Deprecated 408 | - Deprecated API `setCUCMCredential(username: String, password: String)` instead use `setCallServiceCredential(username: String, password: String)` 409 | 410 | --- 411 | ## [3.7.0](https://github.com/webex/webex-ios-sdk/releases/tag/3.7.0) 412 | Released on **30 September, 2022**. 413 | #### Added 414 | - New struct `Captcha` to represent the Captcha object. 415 | - New struct `Breakout` A data type to represent the breakout. 416 | - New struct `BreakoutSession` A data type to represent the breakout session. 417 | - New case `forbidden` in enum `CreatePersonError`, `UpdatePersonError` 418 | - Three new cases `invalidPassword(reason: String)`, `captchaRequired(captcha: Phone.Captcha)`, `invalidPasswordWithCaptcha(captcha: Phone.Captcha)` to enum `WebexError` 419 | - New API `Phone.isRestrictedNetwork: Bool` to check whether the device is in a restricted network. 420 | - New API `Call.joinBreakoutSession(session: BreakoutSession)` to join the Breakout Session manually by passing the `BreakoutSession` if host has enabled allow join session later. 421 | - New API `Call.returnToMainSession()` to return to main session. 422 | - New API `Phone.refreshMeetingCaptcha(completionHandler: @escaping (Result) -> Void)` to refresh the Captcha object to get a new Captcha code. 423 | - New API `Call.correlationId: String?` to get the correlationId for that particular call. 424 | - New API `MediaOption.captchaId: String?` to get & set unique id for the captcha. 425 | - New API `MediaOption.captchaVerifyCode: String?` to get & set captcha verification code to be entered by user. 426 | - New API `Space.isExternallyOwned: Bool?` It will be true If a space is owned/created by non-org/external user. 427 | - New callback `onRestrictedNetworkStatusChanged: ((_ status: Bool) -> Void)?` to monitor restricted network status changes. 428 | - New callback `Call.onBreakoutErrorHappened: ((BreakoutError) -> Void)?` to notify when any breakout api returns error. 429 | - New callback `Call.onBreakoutUpdated: ((Breakout) -> Void)?` to notify when Breakout is updated. 430 | - New callback `Call.onBroadcastMessageReceivedFromHost: ((String) -> Void)?` to notify when host broadcast the message to the session. 431 | - New callback `Call.onHostAskingReturnToMainSession: (() -> Void)?` to notify when host is asking participants to return to main meeting. 432 | - New callback `Call.onJoinableSessionListUpdated: (([BreakoutSession]) -> Void)?` to notify when list of join breakout session changes. 433 | - New callback `Call.onJoinedSessionUpdated: ((BreakoutSession) -> Void)?` to notify when joined Breakout session is updated. 434 | - New callback `Call.onReturnedToMainSession: (() -> Void)?` to notify when returned to main session. 435 | - New callback `Call.onSessionClosing: (() -> Void)?` to notify when Breakout session is closing. 436 | - New callback `Call.onSessionEnabled: (() -> Void)?` to notify when Breakout session is enabled. 437 | - New callback `Call.onSessionJoined: ((BreakoutSession) -> Void)?` to notify when Breakout session is joined. 438 | - New callback `Call.onSessionStarted: ((Breakout) -> Void)?` to notify when Breakout session is started. 439 | 440 | #### Updated 441 | - `roles`,`licenses` and `siteUrls` fields are added to the `Person` class. 442 | - In `Person.update` displayName field is not optional now 443 | 444 | --- 445 | ## [3.6.0](https://github.com/webex/webex-ios-sdk/releases/tag/3.6.0) 446 | Released on 2022-08-24 447 | #### Added 448 | - 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 449 | - Added new API `call.removeMediaStreamCategoryC(participantId: String)` to remove the pinning of a participant's stream 450 | - Added new API `Webex.startUCServices()` to start login process of CUCM 451 | - Added new API `Webex.retryUCSSOLogin()` in case UC sso login expires or requires a retry 452 | - Added new API `Webex.forceRegisterPhoneServices()` to handle `RegisteredElsewhere` error 453 | - Added new struct `CallHistoryRecord` 454 | - Added new callback `onUCSSOLoginFailed(failureReason: UCSSOFailureReason)` to notify app when SSO login fails. 455 | 456 | #### Updated 457 | - Added Support for message with video and thumbnail 458 | - Post message api was returning the message object with mentions as empty array 459 | - List message api bug fixes to return correct data before a provided date or time and honouring max value 460 | - Fixed a condition where the sdk crashes because of unguarded null pointer access on logout 461 | - Fixed an issue with space ID encoding when a meeting is started 462 | - Fixed CUCM login for SSO authentication 463 | - Fixed CUCM call history 464 | - Renamed callback `showUCSSOLoginView(to url: String)` to `loadUCSSOView(to url: String)` 465 | - Refactored `Phone.getCallHistory()` to return `CallHistoryRecord`s instead of `Space`s 466 | --- 467 | --- 468 | ## [3.5.0](https://github.com/webex/webex-ios-sdk/releases/tag/3.5.0) 469 | Released on 2022-06-07 470 | #### Added 471 | - Added new enum `MediaStream` to denote the Media stream 472 | - Added new enum `MediaStreamQuality` to denote the Media stream quality 473 | - Added new enum `MediaStreamChangeEventType` to denote the MediaStreamChangeEvent type 474 | - Added new enum `MediaStreamChangeEventInfo` to denote the changed event information 475 | - Added new API 'call.mediaStreams' to get all opened auxiliary streams 476 | - Added new API `call.onMediaStreamAvailabilityListener` to notify when media stream is available/unavailable 477 | - Added new API `stream.setOnMediaStreamInfoChanged` to notify when media stream info is change 478 | - 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. 479 | - Added new API `call.setMediaStreamsCategoryB(numStreams: Int, quality: MediaStreamQuality)` to set all category B streams to the specified params 480 | - Added new API `call.removeMediaStreamCategoryA()` to remove the Active Speaker stream 481 | - Added new API `call.removeMediaStreamsCategoryB()` to remove all category B streams 482 | 483 | #### Updated 484 | Support for 1080p video resolution 485 | - `webex.phone.videoMaxTxBandwidth = Phone.DefaultBandwidth.maxBandwidth1080p.rawValue` to capture Full HD resolution video 486 | - `webex.phone.videoMaxRxBandwidth = Phone.DefaultBandwidth.maxBandwidth1080p.rawValue` To receive Full HD resolution video 487 | - FIXED - VBG issues 488 | - FIXED - postToPerson api issue fixed for JWT users 489 | --- 490 | ## [3.4.0](https://github.com/webex/webex-ios-sdk/releases/tag/3.4.0) 491 | Released on 2022-04-19 492 | #### Added 493 | - Added new enum `MediaQualityInfo` to denote the media quality 494 | - Added new API `Call.onMediaQualityInfoChanged()` to notify when media quality is changed 495 | - Added new API `Message.Text.html(html: String) -> Text` 496 | - Added new API `Message.Text.markdown(markdown: String) -> Text` 497 | 498 | #### Updated 499 | - Fixed - Crash when remote user starts or stops sharing 500 | - Fixed - Call pipeline improvement 501 | - Fixed - List messages before messageId not returning messages 502 | - Fixed - Text object type incorrect on received messages- 503 | - Fixed - Message sender details incorrect in integration use case 504 | 505 | #### Deprecated 506 | - Sending multiple formats of text in the same message is not supported. Below Text constructors are deprecated 507 | - `Message.Text.html(html: String, plain: String? = nil) -> Text` 508 | - `Message.Text.markdown(markdown: String, html: String, plain: String? = nil) -> Text` 509 | 510 | ## [3.3.0](https://github.com/webex/webex-ios-sdk/releases/tag/3.3.0) 511 | Released on 2022-02-15 512 | #### Added 513 | - Added new API `Call.wxa` for Webex assistant and real time transcription controls 514 | - Added new API `Call.cameraTorchMode` 515 | - Added new API `Call.cameraFlashMode` 516 | - Added new API `Call.zoomFactor` 517 | - Added new API `Call.exposureDuration` 518 | - Added new API `Call.exposureISO` 519 | - Added new API `Call.exposureTargetBias` 520 | - Added new API `Call.setCameraFocusAtPoint(:pointX:pointY)` 521 | - Added new API `Call.setCameraCustomExposure(:duration:iso)` 522 | - Added new API `Call.setCameraAutoExposure(:targetBias)` 523 | - Added new API `Call.takePhoto()` 524 | 525 | #### Updated 526 | - Enhanced documentation coverage 527 | - Decoupled WebexBroadcastExtensionKit from WebexSDK 528 | - Fixed thumbnail for high resolution images not loading 529 | - Fixed decoding of special characters in urlencoded Guest issuer JWT token 530 | - Made exp field as optional in Guest Issuer JWT 531 | - Fixed callback not being fired for deleting self membership from space 532 | - Fixed an issue with fetching inter-cluster team memberships 533 | 534 | ## [3.2.1](https://github.com/webex/webex-ios-sdk/releases/tag/3.2.1) 535 | Released on 2021-11-30 536 | #### Added 537 | - Added new API `Call.forceSendingVideoLandscape(forceLandscape:completionHandler:)` to set local video view in landscape 538 | 539 | #### Updated 540 | - Added new field `locusUrl` to `Call` struct 541 | 542 | ## [3.2.0](https://github.com/webex/webex-ios-sdk/releases/tag/3.2.0) 543 | Released on 2021-10-18 544 | #### Added 545 | - Added new `TokenAuthenticator` for authenticating with external guest access token 546 | - Added VirtualBackground support 547 | - Added new API `Phone.isVirtualBackgroundSupported` to check whether your device supports virtual background feature 548 | - Added new API `Phone.virtualBackgroundLimit` to get/set the limit of custom virtual background 549 | - Added new API `Phone.fetchVirtualBackgrounds(:completionHandler)` API to get all virtual backgrounds 550 | - Added new API `Phone.addVirtualBackground(:image:completionHandler)` API to add new virtual background image 551 | - Added new API `Phone.removeVirtualBackground(:background:completionHandler)` API to delete selected virtual background item 552 | - Added new API `Phone.applyVirtualBackground(:background:mode:completionHandler)` API to apply virtual background for 'Preview' or 'Call' 553 | - Added new API `Call.onCpuHitThreshold()` to notify when CPU reaches threshold 554 | - Added new struct `Phone.VirtualBackground` to denote the virtual background item 555 | - Added new struct `Phone.VirtualBackgroundThumbnail` to denote the thumbnail of virtual background item 556 | - Added new enum `Phone.VirtualBackgroundType`to denote the type of virtual background item among None, Blur and Custom 557 | - Added new enum `Phone.VirtualBackgroundMode` to denote the mode for applying virtual background for Preview or Call 558 | - Added new enum `FetchVirtualBackgroundError` 559 | - Added new enum `AddVirtualBackgroundError` 560 | - Added new enum `RemoveVirtualBackgroundError` 561 | - Added new enum `ApplyVirtualBackgroundError` 562 | - Added new API `CalendarMeetings.list(:startDate:endDate:callback)` to list all calendar meetings in a date range 563 | - Added new API `CalendarMeetings.get(:meetingId:callback)` to fetch a single calendar meeting by meetingId 564 | - Added new struct `Meeting` to represent a Calendar Meeting item 565 | - Added new struct `MeetingInvitee` to represent a person invited to a calendar meeting 566 | - Added new enum `InviteeResponse` to represent the response of a meeting invitee 567 | - Added new API `CalendarMeetings.onEvent` to register a callback to be fired when a calendar meeting event occurs 568 | - Added new enum `CalendarMeetingEvent` to represent a scheduled calendar meeting event 569 | 570 | #### Updated 571 | - Updated WME to 11.9.0.9 572 | - Added new field `meetingId` to `Call` struct 573 | - Added public constructor for `RemoteFile` struct 574 | - Added public constructor for `RemoteFile.Thumbnail` struct 575 | 576 | ## [3.1.0](https://github.com/webex/webex-ios-sdk/releases/tag/3.1.0) 577 | Released on 2021-08-16 578 | #### Added 579 | - Added FedRAMP support 580 | - Added new API `OAuthAuthenticator.getAuthorizationUrl(:completionHandler)` to get a valid authorization URL to initate OAuth 581 | - Added new API `OAuthAuthenticator.authorize(:oauthCode:completionHandler)` to authorize with auth code from OAuth first leg 582 | - Added new API `Phone.getServiceUrl(:ServiceUrlType)` API 583 | - 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 provide `spark:all` scope always to this argument 584 | - Added new API `Call.isSpaceMeeting` to denote the call is space backed meeting type 585 | - Added new API `Call.isSelfCreator` to denote if self is the initiator of the call 586 | - Added new API `Call.hasAnyoneJoined`to denote if anyone joined the meeting, excluding self 587 | - Added new API `Call.isPmr` to denote the call is a personal meeting room 588 | - Added new API `Call.isMeeting` to differentiate between meetings and calls 589 | - Added new API `Call.isScheduledMeeting` to differentiate between scheduled meetings and ad-hoc meetings 590 | - Added new enum `Base64EncodeError` 591 | - Added new enum `TokenLoginError` 592 | - Added new `case .personNotFound` to `DeletePersonError` enum 593 | - Added new `case .badRequest` to following enums: `ListMembershipsError`, `ListTeamMembershipResult`, `DeleteSpaceResult`, `ListWebhooksResult`, `GetWebhookByIdResult`, `CreateWebhookResult`, `UpdateWebhookByIdResult` and `DeleteWebhookByIdResult` 594 | 595 | #### Updated 596 | - `base64Encode(resourceType: ResourceType, resource: String, completionHandler: @escaping (String, SpaceApiErrorInfo, Bool) -> Void)` to `base64Encode(resourceType: ResourceType, resource: String, completionHandler: @escaping (Result) -> Void)` 597 | - 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)` 598 | 599 | #### Removed 600 | - Removed `Phone.connected` API 601 | - Removed `SpaceApiErrorInfo` struct 602 | 603 | ## [3.0.0](https://github.com/webex/webex-ios-sdk/releases/tag/3.0.0) 604 | Released on 2021-05-24 605 | #### Added 606 | - Major rewrite of the SDK. 607 | - Ability to make calls via CUCM. 608 | - Receive push notification for incoming CUCM calls. 609 | - Added new API `Webex.setUCDomainServerUrl(ucDomain: String, serverUrl: String )` for CUCM 610 | - Added new API `Webex.setCUCMCredential(username: String, password: String )` for CUCM 611 | - Added new API `Webex.getUCSSOLoginView()` for CUCM SSO login 612 | - Added new API `Webex.ucCancelSSOLogin()` to cancel CUCM SSO login 613 | - Added new API `Webex.isUCLoggedIn()` for CUCM 614 | - Added new API `Webex.getUCServerConnectionStatus()` for CUCM 615 | - Added new `Webex.initialize` that sets up the SDK and automatically logs in a previously logged in user 616 | - Added new API `Webex.base64Encode(resourceType: ResourceType, resource: String, completionHandler: handler)` to encode UUID as Base64 617 | - Added new API `Webex.base64Decode(encodedResource: String)` to decode Base64 to Resource 618 | - Added new API `SpaceClient.filter` to fetch person and bots based on the given query 619 | - 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 620 | - Added new API `Webex.getLogFileUrl` to get file URI of where all the logs are stored 621 | - Added new struct `Message.MentionPos` to describe the position of a Mention 622 | - Added new property `Call.schedules` to get the the schedules of a call if the call has one or more schedules. 623 | - Added `Call.startAssociatedCall()` for CUCM calls 624 | - Added `CallAssociationType` enum to indicate whether call is of type Transfer or merge 625 | - Added `Call.transferCall()` for CUCM calls 626 | - Added `Call.mergeCall()` for CUCM calls 627 | - Added `Call.holdCall()` for CUCM calls 628 | - Added `Call.isOnHold()` for CUCM calls 629 | - Added new API `Call.onFailed` to notify that a call has failed 630 | - Added new API `Call.onInfoChanged()` to notify when call object changes 631 | - Added new API `Call.setParticipantAudioMuteState()` to mute particular participant 632 | - Added new API `Call.setAllParticipantAudioMuteState()` to control mute state of all participants 633 | - Added new property `CallSchedule.organzier` to get organizer of a scheduled call 634 | - Added new property `CallSchedule.meetingId` to get meetingId of a scheduled call 635 | - Added new property `CallSchedule.link` to get link of a scheduled call 636 | - Added new property `CallSchedule.subject` to get subject of a scheduled call 637 | - Added new struct `Resource` to represent a Resource 638 | - Added new enum `ResourceType` to represents the type of a Resource 639 | - Added new delegate `WebexUCLoginDelegate` to support UC login state changes 640 | - Added `refreshToken()` to JWTAuthenticator 641 | - Introduced new Enum `OAuthResult` 642 | - Introduced new Enum `NotificationCallType` to distinguish between incoming webex calls and CUCM calls 643 | - Added `isGroupCall` API 644 | - Added callEnded in DisconnectReason in onDisconnected event 645 | - Added `Phone.getCallIdFromNotificationId` 646 | - Moved getCallHistory from Webex class to Phone class 647 | - Added `Webex.enableConsoleLogger()` to enable/disable console logging 648 | - Added `Webex.logLevel` API to set the log levels 649 | - Added `CallEnded` to `Call.DisconnectReason` 650 | 651 | #### Updated 652 | - Transitioned from using results wrapped in a `ServiceResponse` to just `Result` 653 | - `Phone.dial` has been modified to support dialing CUCM numbers 654 | - `OAuthAuthenticator.authorize(parentViewController: UIViewController, completionHandler: @escaping ((_ success: Bool) -> Void))` changed to `OAuthAuthenticator.authorize(parentViewController: UIViewController, completionHandler: ((_ result: OAuthResult) -> Void)?)` 655 | - `JWTAuthenticator.authorizedWith(:jwt)` changed to `JWTAuthenticator.authorizedWith(:jwt:completionHandler)` 656 | - `OAuthAuthenticator.authorize(oauthCode: String, completionHandler: ((_ success: Bool) -> Void)? = nil)` changed to 657 | `OAuthAuthenticator.authorize(oauthCode: String, completionHandler: ((_ result: OAuthResult) -> Void)? = nil)` 658 | - `Mention.Person` and `Mention.all` now accept `MentionPos` instance 659 | #### Removed 660 | - SSO Authenticator 661 | - Removed `Phone.register()`, `Phone.registered` & `Phone.deregister()` 662 | - `iOSBroadcastingEvent` 663 | - Removed all third party pod dependencies 664 | - Removed `refreshToken()` from Authenticator protocol 665 | - Removed `OAuthAuthenticatorDelegate` 666 | - Removed deprecated field `MediaOption.layout` 667 | - Removed deprecated API `MessageClient.post(personEmail:text:files:queue:completionHandler:)` 668 | - Removed deprecated API `MessageClient.post(personId:text:files:queue:completionHandler:)` 669 | - Removed deprecated API `MessageClient.post(spaceId:text:mentions:files:queue:completionHandler:)` 670 | - Removed `Logger`. You no longer have to implement this as it's already implemented internally 671 | - Removed `Webex.logger` in favor of `Webex.getLogFileURL` 672 | - Removed `applicationGroupIdentifier` param from `MediaOption.audioVideoScreenShare()`. Instead this needs to be a present in your app's `Info.plist` with key as `GroupIdentifier` and value as your app's GroupIdentifier 673 | - Removed `Message.update()` as you no longer have to update the Message instance manually. 674 | 675 | ## [2.8.0](https://github.com/webex/webex-ios-sdk/releases/tag/2.8.0) 676 | Released on 2021-04-30. 677 | #### Added 678 | - Support Multi-stream. 679 | - Support message edit. 680 | - Support meeting with 11 digits meeting number. 681 | - Add Phone.enableBackgroundConnection( ) function. 682 | 683 | #### Updated 684 | - Removed email from CallMembership, added displayName for CallMembership. 685 | - Fix video automatically unmute issue after swithing from background. 686 | - Fix message encryption failures. 687 | - Fix certain events are not getting triggered after Switching network. 688 | - Fix sending video issue in 1:1 calls. 689 | 690 | ## [2.7.0](https://github.com/webex/webex-ios-sdk/releases/tag/2.7.0) 691 | Released on 2020-12-14. 692 | #### Added 693 | - Support to notify a space call status through SpaceObserver. 694 | - Support to notify muted by host during a space call. 695 | - Support to enable Background Noise Removal(BNR), and switch between HP(High Performance) and LP(Low Power) mode. 696 | - Not sending sensitive headers for unknown site. 697 | 698 | #### Updated 699 | - Update Wme.framework. 700 | - Update Alamofire dependency to 5.2.0 701 | - Update ObjectMapper dependency to 4.2.0 702 | - Remove AlamofireObjectMapper dependency. 703 | - Fix SpaceClient.listWithActiveCalls() cannot show spaces cross-cluster. 704 | - Fix App hangs when trying to record a video via UIImagePickerController. 705 | 706 | ## [2.6.0](https://github.com/webex/webex-ios-sdk/releases/tag/2.6.0) 707 | Released on 2020-9-28. 708 | #### Added 709 | - Support iOS 14 and XCode 12. 710 | - Support for incoming call notifications for scheduled sapce call. 711 | - Support for being notified of the end of a space call. 712 | - Support to join password-protected meetings. 713 | - Add a new API `Call.videoLayout` to change the video layout during a call. 714 | - Add a new API `Call.remoteVideoRenderMode` to specify how the remote video adjusts its content to be render in a view. 715 | - Add a new API `Phone.AdvancedSettings.videoMaxTxFPS` to change the max sending fps for video. 716 | - Add a new API `Phone.cancel` to cancel the currently outgoing call that has not been connected. 717 | - Add a new API `SpaceClient.listWithActiveCalls` to get a list of spaces that have ongoing call. 718 | - Add a new API `Message.isAllMentioned` to check if the message mentioned everyone in space. 719 | - Add a new API `Message.mentions` to get all people mentioned in the message. 720 | 721 | #### Updated 722 | - Improved video and audio quality 723 | - API enhancements to improve bandwidth control. 724 | - Update Wme.framework to 10.8.5. 725 | - Update Starscream.framework to 4.0.4. 726 | - Fixed unable to remove a Webex object once it has been created. 727 | - Fixed switch Camera Error 728 | - Fixed user in EMEAR org cannot message and call the user in US org. 729 | - Fixed could not get thumbnail of the WORD, POWERPOINT, EXCEL and PDF file in the message. 730 | - Fixed video received shows as zoomed and cropped when in iPhone/iPad is in portrait mode. 731 | - Fixed Participant's video in video call is black. 732 | 733 | ## [2.5.0](https://github.com/webex/webex-ios-sdk/releases/tag/2.5.0) 734 | Released on 2020-3-30. 735 | #### Added 736 | - Support for threaded messaging. 737 | - Support compose and render the active speaker video with other attendee video and all the names in one single view. 738 | - Support single, filmstrip and grid layouts for the composed video view. 739 | 740 | #### Updated 741 | - Update Wme.framework. 742 | - Update Starscream.framework. 743 | - Remove deprecated Apple UIWebView API. 744 | 745 | ## [2.4.0](https://github.com/webex/webex-ios-sdk/releases/tag/2.4.0) 746 | Released on 2020-1-15. 747 | #### Added 748 | - Support to join the meeting where lobby is enabled. 749 | - Support to let-in waiting people from looby to the meeting. 750 | 751 | #### Updated 752 | - Fixed screen share didn't work. 753 | - Fixed loud speaker didn't work. 754 | 755 | 756 | ## [2.3.0](https://github.com/webex/webex-ios-sdk/releases/tag/2.3.0) 757 | Released on 2019-09-30. 758 | #### Added 759 | - Add API to receive membership created/deleted/updated/seen events. 760 | - Add API to receive room created/updated events. 761 | - Add API to get last activity status of a space. 762 | - Add API to get a list of last activity status of all spaces. 763 | - Add API to get a list of read status of all memberships in a space. 764 | - Add API to get space meeting details. 765 | - Add API to send read receipt for message. 766 | - Add API to get the lastActivity of person. 767 | - Add API to get the token expiration date for JWTAuthenticator. 768 | 769 | #### Updated 770 | - Support iOS 13. 771 | - Support Swift5 and Xcode11. 772 | - Update Wme.framework. 773 | - Reduce latency when list messages. 774 | - Fixed camera shows my video as green. 775 | 776 | ## [2.1.0](https://github.com/webex/webex-ios-sdk/releases/tag/2.1.0) 777 | Released on 2019-06-07. 778 | #### Updated 779 | - Improve API docs. 780 | - Fixed Broadcast Extension Kit cannot find frameworks. 781 | 782 | ## [2.0.0](https://github.com/webex/webex-ios-sdk/releases/tag/2.0.0) 783 | Released on 2018-10-31. 784 | #### Added 785 | - SDK rebranding. 786 | - Support multi streams in space call. 787 | 788 | #### Updated 789 | - Rename room to space. 790 | - Upgrade media engine to fix crash issue on CallKit. 791 | - Fixed crash issue on media cluster discovery. 792 | - Fixed call event confusion in the large meeting. 793 | - Refactor code to improve code quality. 794 | 795 | ## [1.4.1](https://github.com/ciscospark/spark-ios-sdk/releases/tag/1.4.1) 796 | Released on 2018-09-29. 797 | #### Added 798 | - Support Swift4.2 and Xcode10. 799 | 800 | #### Updated 801 | - Fixed Activity roomtype always be 'group'. 802 | - Remove Seu umbrella warning. 803 | - Fixed Spark call crashing on iOS when using CallKit. 804 | - Speed up reachability check. 805 | 806 | ## [1.4.0](https://github.com/ciscospark/spark-ios-sdk/releases/tag/1.4.0) 807 | Released on 2018-05-15. 808 | 809 | #### Added 810 | - Support screen sharing for both sending and receiving. 811 | - A new API to refresh token for authentication. 812 | - Two properties in Membership: personDisplayName, personOrgId. 813 | - Support real time message receiving. 814 | - Support message end to end encription. 815 | - A few new APIs to do message/file end to end encryption, Mention in message, upload and download encrypted files. 816 | - Five properties in Person: nickName, firstName, lastName, orgId, type. 817 | - Three functions to create/update/delete a person for organization's administrator. 818 | - Support room list ordered by either room ID, lastactivity time or creation time. 819 | - A new property in TeamMembership: personOrgId. 820 | - Two new parameters to update webhook : status and secret. 821 | 822 | #### Updated 823 | - Fixed ocassional crash when switching between video call and audio call when CallKit is used. 824 | - Fixed video freeze when iOS SDK makes a call to JavaScript SDK. 825 | - Fixed crash issue when invoking Phone.requestMediaAccess function from background thread. 826 | - Fixed wrong call type for room calling when there are only two people in the call. 827 | 828 | ## [1.3.1](https://github.com/ciscospark/spark-ios-sdk/releases/tag/1.3.1) 829 | Released on 2018-1-12. 830 | 831 | #### Feature: 832 | SSO Authenticator 833 | 834 | ## [1.3.0](https://github.com/ciscospark/spark-ios-sdk/releases/tag/1.3.0) 835 | Released on 2017-10-13. 836 | 837 | ## [1.2.0](https://github.com/ciscospark/spark-ios-sdk/releases/tag/1.2.0) 838 | Released on 2017-05-23. 839 | 840 | ## [1.1.0](https://github.com/ciscospark/spark-ios-sdk/releases/tag/1.1.0) 841 | Released on 2016-11-29. 842 | 843 | #### Updated 844 | - Support swift 3.0 845 | 846 | ## [1.0.0](https://github.com/ciscospark/spark-ios-sdk/releases/tag/1.0.0) 847 | Released on 2016-07-25. 848 | 849 | #### Added 850 | - Travis CI 851 | 852 | #### Updated 853 | - Media engine refactor 854 | - Use NSDate for object mapper 855 | 856 | ## [0.9.149](https://github.com/ciscospark/spark-ios-sdk/releases/tag/0.9.149) 857 | Released on 2016-07-11. 858 | 859 | #### Added 860 | - Add Teams and Team Memberships API. 861 | - Support DTMF feature. 862 | 863 | #### Updated 864 | - Fix Message creation timestamp bug. 865 | - Fix Room type bug. 866 | 867 | ## [0.9.148](https://github.com/ciscospark/spark-ios-sdk/releases/tag/0.9.148) 868 | Released on 2016-06-23. 869 | 870 | #### Added 871 | - Suppport customized notification center (CallNotificationCenter/PhoneNotificationCenter) based on protocol (CallObserver/PhoneObserver), to avoid NSNotificationCenter flaws: 872 | - Pass parameters via a userInfo dicionary, so type info is lost. 873 | - Use constant string for notification name and parameter key name. It's hard to maintain and document. 874 | - Must deregister notifications, if not, it may cause crash. 875 | - Add remote video/audio mute/unmute notifications. New API CallObserver.remoteMediaDidChange() is introduced. 876 | - Support audio-only call. MediaOption parameter is introduced for it in API Phone.Dail()/Call.Answer(). 877 | - Support media cluster discovery. 878 | - Support video license activation. 879 | - Enable hardware acceleration, and support 720p video quality. 880 | - Support toggling receiving audio and video. New API Call.toggleReceivingVideo()/Call.toggleReceivingAudio() is introduced for it. 881 | 882 | #### Updated 883 | - Refactor storage code logic. defaultFacingMode/defaultLoudSpeaker in Spark.Phone are not persistent, so after restart app, these setting doesn't exist. 884 | - Fix logging performance issue. 885 | - Fix missing incoming call issue when start APP from not running status, or switch APP to foreground from background. 886 | - Update Wme.framework, to fix SIGPIPE signal during debug mode. 887 | 888 | ## [0.9.147](https://github.com/ciscospark/spark-ios-sdk/releases/tag/0.9.147) 889 | Released on 2016-05-25. 890 | 891 | #### Added 892 | - 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. 893 | - Introduce Apache License for SDK. 894 | 895 | #### Updated 896 | - Refactor web socket code logic, to fix some potential issue. 897 | - Update Wme.framework. 898 | 899 | ## [0.9.146](https://github.com/ciscospark/spark-ios-sdk/releases/tag/0.9.146) 900 | Released on 2016-05-19. 901 | 902 | #### Added 903 | - Add CHANGELOG. 904 | - Support refreshing token. 905 | 906 | #### Updated 907 | - Refine OAuth flow logic. 908 | 909 | ## [0.9.137](https://github.com/ciscospark/spark-ios-sdk/releases/tag/0.9.137) 910 | Released on 2016-05-12. 911 | 912 | #### Added 913 | - Initial release of Cisco Spark SDK. 914 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | All contents are licensed under the Cisco EULA 2 | (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html) 3 | 4 | This includes but not limited to "Wme.framework", "Sbu.framework", "Seu.framework", 5 | "util_ios.framework", "wbxaudioengine.framework", "wbxaecodec.framework", "mediastores_ios.framework", "WebexSDK.framework", "WebexBroadcastExtensionKit.framework" -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Cisco Webex iOS SDK 2 | 3 | [![CocoaPods](https://img.shields.io/cocoapods/v/WebexSDK.svg)](https://cocoapods.org/pods/WebexSDK) 4 | [![license](https://img.shields.io/github/license/webex/webex-ios-sdk.svg)](https://github.com/webex/webex-ios-sdk/blob/master/LICENSE) 5 | 6 | The Cisco Webex iOS SDK makes it easy to integrate and secure messaging, meeting and calling features in your iOS apps. 7 | 8 | ## SDK types: 9 | 10 | - Message SDK : WebexSDK/Message 11 | - This is a lightweight SDK which supports only messaging features 12 | - It does not support calling and meeting related features 13 | 14 | Pod usage: 15 | 16 | ``` 17 | target 'MyApp' do 18 | pod 'WebexSDK/Message' 19 | end 20 | ``` 21 | 22 | - WebexCalling SDK : WebexSDK/Wxc 23 | - This SDK supports only WebexCalling feature 24 | - It does not support CUCM calling 25 | 26 | Pod usage: 27 | 28 | ``` 29 | target 'MyApp' do 30 | pod 'WebexSDK/Wxc' 31 | end 32 | ``` 33 | 34 | - Meeting SDK : WebexSDK/Meeting 35 | - This SDK supports Messaging and Meeting features 36 | - It does not support CUCM Calling or Webex Calling 37 | 38 | Pod usage: 39 | 40 | ``` 41 | target 'MyApp' do 42 | pod 'WebexSDK/Meeting' 43 | end 44 | ``` 45 | 46 | - Full SDK : WebexSDK 47 | - Supports all the features. 48 | - Details of all features can be found [here](https://developer.webex.com/docs/sdks/ios) 49 | 50 | Pod usage: 51 | 52 | ``` 53 | target 'MyApp' do 54 | pod 'WebexSDK' 55 | end 56 | ``` 57 | 58 | All the SDKs are independent of each other. Developers can use either one of them to fulfil their use case. 59 | 60 | ## Documentation 61 | - [Requirements & Feature List](https://developer.webex.com/docs/sdks/ios) 62 | - [Guides](https://github.com/webex/webex-ios-sdk/wiki) 63 | - [API Reference](https://webex.github.io/webex-ios-sdk/) 64 | - [Kitchen Sink Sample App](https://github.com/webex/webex-ios-sdk-example) 65 | 66 | ## Support 67 | - [Webex Developer Support ](https://developer.webex.com/support) 68 | - Email: devsupport@webex.com 69 | 70 | ## License 71 | 72 | © 2016-2025 Cisco Systems, Inc. and/or its affiliates. All Rights Reserved. 73 | 74 | See [LICENSE](https://github.com/webex/webex-ios-sdk/blob/master/LICENSE) for details. 75 | --------------------------------------------------------------------------------