Changelog
Voximplant iOS SDK changelog
2.36.0
VICall.videoSource now returns the video source that is currently used in the call. Please note that the property returns nil for audio calls.
Bugfix and stability improvements.
2.35.0
Dependency update: VoxImplantWebRTC is updated to 78.5.1.
Bugfix and stability improvements.
Change iOS SDK toolchain from 12.0 to 11.5 to keep the compatibility for projects that use Xcode 11.5. iOS SDK toolchain will be updated later with a corresponding message in the changelog.
2.34.3
Fix: [VIEndpointDelegate endpoint:didRemoveRemoteVideoStream:] is invoked just after [VIEndpointDelegate endpoint:didAddRemoteVideoStream:] in a conference call in some cases.
[VICall setSendVideo:completion:] now behaves the same way for video conference and video call. The endpoints will receive [VIEndpointDelegate endpoint:didAddRemoteVideoStream:] or [VIEndpointDelegate endpoint:didRemoveRemoteVideoStream:] events if the method call is completed successfully.
2.34.2
Bugfix and stability improvements.
2.34.1
Fix: [VICall setSendVideo:completion:] may fail with VICallErrorCodeAlreadyInThisState error.
Fix: audio is lost after taking a call off hold from CallKit UI on the locked screen.
Bugfix and stability improvements.
2.34.0
Major update of AVAudioSession management and audio device detection:
- Restore AVAudioSessionCategory (used before a call) after the call ended.
- Audio device detection in AVAudioSessionCategory different from PlayAndRecord.
- Prevent audio route change event cycling.
Added VILoginErrorCodeMAUAccessDenied error code.
Bugfix and stability improvements.
Important notice. If the application uses CallKit, it is important to check the correctness of VIAudioManager API usage for CallKit integration. Specially, it is required to pay attention on (see example in AudioCallKit demo project):
- [VIAudioManager callKitConfigureAudioSession:] should be called before the call is reported to CXProvider.
- [VIAudioManager callKitReleaseAudioSession] should be called after the call has ended and CallKit has deactivated the audio session.
Known issues:
- It is not possible to select Receiver while a call is on hold and it is reported to CallKit.
- It is not possible to select Receiver before a call is connected, if a Bluetooth audio device is connected.
2.33.0
Support to share screen outside the application using broadcast upload extension and ReplayKit. See demo application.
Improvements for in-app screen sharing: rotate video frame based on the device orientation, video frame is scaled to 720p.
Bugfix and stability improvements.
2.32.1
Fixed the crash on audio route changing if VIClient is created not on the application start. Bug appeared in 2.31.0.
2.32.0
In-App screen sharing [VICall startInAppScreenSharing:] API.
2.31.1
Improve compatibility with Voximplant Web SDK for [VICall setSendVideo:completion:] API.
Bugfix and stability improvements.
2.31.0
Dependency update: VoxImplantWebRTC is updated to 78.2.1.
Change default camera resolution for video conference to 352x288. It does not affect default camera resolution for video calls, it stays the same - 640x480.
Change API for push token (un)registration. It is now possible to get the result of push token (un)registration via completion handler.
Deprecation of [VIClient registerPushNotificationsToken:imToken:] in favor:
- [VIClient registerVoIPPushNotificationsToken:completion:]
- [VIClient registerIMPushNotificationsToken:completion:]
Deprecation of [VIClient unregisterPushNotificationsToken:imToken:] in favor:
Add VIEndpoint.place property to get the position of the endpoint video stream in a video conference.
Fix: [VICall setSendVideo:completion:] did not enabled video in a video conference if video send was disabled on video conference creation.
Improved Swift API generation.
Improve audio device management.
Bugfix and stability improvements.
2.30.0
Added a new error code VICallErrorCodeCallEnded for the cases when mid-call operations could not be completed due to the call has ended.
Bugfix and stability improvements.
2.29.0
Dependency update: VoxImplantWebRTC is updated to 78.2.0.
Fix: no audio after enabling the microphone via VICall.sendAudio API, if it had been disabled before the call connected.
Bugfix and stability improvements.
2.28.0
Added [VIAudioFile initWithData:looped:] API to play downloaded data.
VIAudioFile.looped can be changed dynamically.
[VICall setSendVideo:completion:], [VICall startReceiveVideoWithCompletion:], [VICall setHold:completion:] are now failed with VICallErrorCodeIncorrectOperation if called when the call is not connected.
Fix: VIOutboundAudioStats.audioLevel was reported incorrectly.
Bugfix and stability improvements.
2.27.0
Introduce VIAudioFile API to play audio files.
Bugfix and stability improvements.
Dependency update: VoxImplantWebRTC is updated to 78.1.0.
2.26.1
Bugfix and stability improvements.
2.26.0
Dependency update: VoxImplantWebRTC is updated to 78.0.0.
Bugfix and stability improvements.
2.25.2
Fix: [VICall startReceiveVideoWithCompletion:] may fail with VICallErrorCodeTimeout error.
Bugfix and stability improvements.
2.25.1
Fix for H264 codec selection for outgoing video calls.
Bugfix and stability improvements.
2.25.0
Authentication parameters that may be used for login with access token are now provided via VIAuthParams class. It affects the following methods:
New delegate method [VIClientCallManagerDelegate client:pushDidExpire:] may be used to detect the expiration of a push notification for an incoming call.
Fix: video is not received after the another endpoint has started to send video.
2.24.0
Audio device management bugfix and stability improvements.
Min supported iOS version is changed to 9.0. iOS 8.0 is no more supported.
Dependency update: VoxImplantWebRTC is updated to 74.1.0
[VIClient registerPushNotificationsToken:imToken:] and [VIClient unregisterPushNotificationsToken:imToken:] now return the result as BOOL value.
VIMessengerDelegate methods are now optional.
2.23.0
Legacy API removal
2.22.0
API changes to improve CallKit integration:
- [VIClient handlePushNotification:] now returns UUID that can be used to report an incoming call to CallKit
- Introduced VICall.callKitUUID property to match VICall and CXCall instances.
2.21.4
Improvements for establishing the connection to the Voximplant Cloud
Fix: the connection to the Voximplant Cloud is not closed if a call was ended in the background
Bugfix and stability improvements
2.21.3
Dependency update: VoxImplantWebRTC is updated to 74.0.1
Improve VIQualityIssueTypePacketLoss issue detection
Bugfix and stability improvements
2.21.2
Fix a regression introduced in 2.21.0. VIQualityIssueDelegate methods were not invoked on [VICall qualityIssueDelegate]
2.21.1
Bugfix and stability improvements
2.21.0
Dependency update: VoxImplantWebRTC is updated to 74.0.0
Remove the following deprecated API:
- VIAudioManager.useLoudSpeaker
- VICall.preferredVideoCodec
- [VICall stopWithHeaders:]
- [VICall answerWithSendVideo:receiveVideo:customData:headers:]
- [VICall rejectWithHeaders:]
- [VIClient saveLogToFileEnable]
- [VIClient callToUser:withSendVideo:receiveVideo:customData:]
[VICall start] now ignored if the method is used to answer an incoming call
[VICall setSendVideo:completion:] API works properly in any combinations of the iOS SDK versions, but it wouldn’t trigger the following events during calls between Voximplant iOS SDK 2.21.0 (and higher) and Voximplant iOS SDK 2.20.7 (and below). These events will be triggered only if the iOS SDK version used is 2.21.0 and higher.
Fix: VIEndpointDelegate methods were not invoked on the delegate queue (specified on VIClient creation) for Voximplant iOS SDK events
[VICallDelegate call:didDisconnectWithHeaders:answeredElsewhere:] is now invoked before [VIClientSessionDelegate clientSessionDidDisconnect:] if a call is terminated due to network issues (connection lost)
VIConnectivityErrorCodeConnectionClosed is removed
Stability improvements
2.20.7
[VIClient call:settings:] and [VIClient callConference:settings:] now returns nil if number parameter is nil
Stability improvements
2.20.6
Fix for one-way media from iOS device after answering a video call via CallKit
2.20.5
Completion of the method [VIClient refreshTokenWithUser:token:result:] is not invoked if the connection to the Voximplant Cloud is not established
Fix for a rare crash that occurs while establishing the connection to the Voximplant Cloud
2.20.4
Improvement of [VIAudioManager availableAudioDevices] detection while third-party application is playing background audio
VIAudioManagerDelegate methods are now always invoked on the delegate queue
2.20.3
Bugfix and stability improvements
2.20.2
Improvement of multiple calls handling
2.20.1
Fix: completion block for [VIClient requestOneTimeKeyWithUser:result:] is not invoked if an invalid Voximplant user is provided
Stability improvements
2.20.0
Removal of the third-party dependencies
Introduce new call stats: [VICallStats localCandidateType] and [VICallStats remoteCandidateType]
VILogType is renamed to VILogSeverity
Bugfix and stability improvements
2.19.1
Fix for [VIClient handlePushNotification:] API does not process a push notification in some cases
2.19.0
New Messaging API
2.18.0
Introduce VIQualityIssueDelegate interface to monitor quality issues during a call
Introduce [VIOutboundVideoStats streamType] property
Improve AVAudioSession interruption handling
Stability improvements
2.17.0
Introduce new statistics provided by [VICallDelegate call:didReceiveStatistics:]
Object VICallStat, and stat properties of VICall and VIEndpoint are removed
Introduce timestamp property for VIConversationEvent and VIMessageEvent
Faster connection establishment to the Voximplant Cloud
2.16.1
Introduce VIConnectivityErrorCode, VICallErrorCode
Added human-readable reason for [VIClient loginWithUser:password:success:failure:], [VIClient loginWithUser:token:success:failure:] and [VIClient loginWithUser:oneTimeKey:success:failure:] completion block errors
Bugfix and stability improvements
2.16.0
Added error parameter to VIOneTimeKeyResult completion block
Reordered parameters of VIRefreshTokenResult completion block
[VICallDelegate call:didRemoveLocalVideoStream:], [VIEndpointDelegate endpoint:didRemoveRemoteVideoStream:] and [VIEndpointDelegate endpointDidRemove:] events are no more invoked on video call/conference end. All resources related to video streams should be released upon [VICallDelegate call:didDisconnectWithHeaders:answeredElsewhere:] event
Support to receive multiple video streams from the same endpoint (including screen sharing video stream). Introduce VIVideoStreamType to determine if video stream is of type "screen sharing" or not.
Improve AVAudioSession interruption handling
Fix for [VIEndpoint user] is not available while processing incoming call event
Bugfix and stability improvements
2.15.0
New API to start or answer a call: [VIClient call:settings:], [VICall start] and [VICall answerWithSettings:]
Introduce [VIClient callConference:settings:] API that creates call to a dedicated conference without proxy session
Fixed interruption of third party application audio on SDK initialization
Stability improvements
2.14.4
Dependency update: VoxImplantWebRTC is updated to 66.0.0
Improve video call quality
Fixed call statistics to calculate correct packet loss
[VIEndpoint remoteVideoStreams] property now returns only active video streams
Fix for [VICallDelegate call:didAddLocalVideoStream:] and [VICallDelegate call:didRemoveLocalVideoStream:] were invoked not on the main thread in case if VIClient is initialized with a custom delegateQueue
Stability improvements
2.14.3
Update of logging mechanism, allowing to separately capture Voximplant iOS SDK logs via CocoaLumberjack loggers
[DDLog addLogger:logger withLevel:DDLogLevelInfo | VILogLevelWarning];
2.14.2
Introduce [VIClient initWithDelegateQueue:bundleId:] constructor. You need to use this only if you are going to send push notifications across several iOS apps using a single Voximplant application
Update of iOS SDK toolchain to 11.4
2.14.1
Fix for a rare crash that occurs when connection unexpectedly dropped
2.14.0
Video conferences support. Introduce [VICallDelegate call:didAddEndpoint:], [VIEndpointDelegate endpointDidRemove:] and [VIEndpointDelegate endpointInfoDidUpdate:] events
Bugfix and stability improvements
2.13.2
Dependency update: CocoaLumberjack is updated to 3.4
Fix for AVAudioSession behavior handling on iOS 10.0
Stability improvements
2.13.1
Improvements in handling audio route changes made via CallKit
Fix for crash on VIClient connect API call when the app enters foreground
Stability improvements
2.13.0
Dependency update: VoxImplantWebRTC is updated to 63.0.0
[VICameraManager shouldMirrorFrontCamera] added to local preview
Introduce [VICameraManager iPhoneOrientationMask] api
Introduce [VIAudioManager selectAudioDevice:] api
Fix for sendVideo fail in video call with Firefox
Bugfix and stability improvements
2.12.0
Dependency update: VoxImplantWebRTC is updated to 62.1.0, pods now contain i386 arch support
Dependency to AFNetworking is removed
Introduce VIRejectMode to manage reject call behavior
Speaker can now be activated before a call
Bugfix and stability improvements
2.11.0
Dependency update: VoxImplantWebRTC is updated to 62.0.0
Fix for camera pre-processing delegate not being called
Introduce AudioSession [VIAudioManager callKitConfigureAudioSession] to provide better CallKit support (GitHub)
Changes in VoIP push notification payload structure. If you checking payload format before passing it onto Voximplant iOS SDK, you should check GitHub for reference.
2.10.0
Introduce [VIClient clientState] property to check current VIClient state
Introduce new login error codes: 408 (timeout) and 491 (invalid state) reported via completion handlers of login API
[VIClient connect] and [VIClient connectWithConnectivityCheck:gateways:] API return false in case if attempt to connect was performed in invalid state
[VIClient disconnect] API will always invoke [VIClientSessionDelegate clientSessionDidDisconnect:]
Fix for crash on starting video call on ios simulator
2.9.0
Fix for no audio issue when the video call is answered via CallKit in lock mode
Fixed background connection handling to improve stability of incoming call processing in background mode
Fix for camera being freezed during the call, improvements for camera stuff
Default capture resolution is 640x480 now
Bugfix and stability improvements
2.8.0
Dependency update: VoxImplantWebRTC is updated to 60.0.0
Fix for ios 8.0 support
Fix for inability to set custom video source for a call (issue was introduced in 2.7.0)
2.7.0
It is now possible to explicitly specify if video send/receive is required while initiating an outgoing call or accepting incoiming call. You can find related changes in the [[VIClient callToUser:withSendVideo:receiveVideo:customData:]] and [[VICall answerWithSendVideo:receiveVideo:customData:headers:]]. [[VICall startWithVideo:headers:]] is changed to [[VICall startWithHeaders:]]
Introduce new API: [[VICall startReceiveVideoWithCompletion]] to start receive video, if video receive was not enabled before.
Dependency change: Cocoalumberjack/Swift 3.2.0 is changed to Cocoalumberjack 3.2.0 to simplify iOS SDK integration to Objective-C projects
2.6.0
Messaging API
2.5.0
Introduce [VICallDelegate iceCompleteForCall:] and [VICallDelegate iceTimeoutForCall:] call events.
Add ability to set custom data on call answer
If call is on hold, using [VICall setSendVideo:completion:] will result in the MediaIsOnHold error(#10007) that is reported via the completion block.
2.4.1
Add new dependency - Cocoalumberjack/Swift 3.2.0, that adds ability to save logs to file
2.4.0
Introduce custom video source for alternative video frame source for a call
2.3.0
Experimental h.264 support can be enabled via the new API
2.2.2
Add ability to get call statistics
2.2.1
Bugfix for double connect call on push notification