Swiftpack.co - Package - twilio/twilio-video-ios
Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.

Twilio Programmable Video for iOS

This repository contains releases of Twilio's Programmable Video SDK for iOS. These releases can be consumed using Swift Package Manager, CocoaPods or manual integration into your project.

NOTE: If you are updating your application for iOS 13 and iPadOS 13 please read our iOS 13 Migration Guide.

Swift Package Manager

You can add Programmable Video for iOS by adding the https://github.com/twilio/twilio-video-ios repository as a Swift Package.

In your Build Settings, you will also need to modify Other Linker Flags to include -ObjC.

As of the latest release of Xcode (currently 12.3), there is a known issue with consuming binary frameworks distributed via Swift Package Manager. The current workaround to this issue is to add a Run Script Phase to the Build Phases of your Xcode project. This Run Script Phase should come after the Embed Frameworks build phase. This new Run Script Phase should contain the following code:

find "${CODESIGNING_FOLDER_PATH}" -name '*.framework' -print0 | while read -d $'\0' framework
do
    codesign --force --deep --sign "${EXPANDED_CODE_SIGN_IDENTITY}" --preserve-metadata=identifier,entitlements --timestamp=none "${framework}"
done

CocoaPods Integration

We support integration using CocoaPods as well. You can add Programmable Video to your project using the following example Podfile:

source 'https://github.com/CocoaPods/Specs'

platform :ios, '11.0'

target 'TARGET_NAME' do
    pod 'TwilioVideo', '~> 4.1'
end

Then run pod install to install the dependencies for your project.

Manual Integration

See manual installation steps.

Carthage Integration

Carthage is not currently a supported distribution mechanism for Twilio Video. Carthage does not currently work with .xcframeworks as documented here. Once Carthage supports binary .xcframeworks, Carthage distribution will be re-added.

Issues and Support

Please file any issues you find here on Github.

Please ensure that you are not sharing any Personally Identifiable Information(PII) or sensitive account information (API keys, credentials, etc.) when reporting an issue.

For general inquiries related to the Video SDK you can file a support ticket.

Github

link
Stars: 41

Releases

Twilio Video SDK iOS 4.1.0 - 2021-01-14T01:39:28

This release consumes twilio-video-cpp-6.0.2.

Enhancements

  • The minimum supported iOS version has been lowered from 12.0 to 11.0. On iOS 11.x simulators, video rendering with VideoView is not supported.

Bug Fixes

  • Fixed a bug where the VideoView was not applying the native scale factor to the drawable size. This was a regression introduced in version 4.0.1.#159

Known Issues

  • The TwilioVideo.xcframework does not currently support the simulator on Apple Silicon arm64 Macs.
  • Carthage is not currently a supported distribution mechanism for Twilio Video. Carthage does not currently work with .xcframeworks as documented here. Once Carthage supports binary .xcframeworks, Carthage distribution will be re-added.
  • Unpublishing and republishing a LocalAudioTrack or LocalVideoTrack might not be seen by Participants. #34
  • H.264 video might become corrupted after a network handoff. #147
  • iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]

Size Impact for 4.1.0

Architecture Compressed Size Uncompressed Size
arm64 4.6 MB 10.8 MB

Twilio Video SDK iOS 4.0.1 - 2020-12-18T21:05:32

This release consumes twilio-video-cpp-6.0.1-rc1.

Bug Fixes

  • Fixed a bug where the video renderer was setting the drwable size incorrectly. This was causing pixelated video when rendered on an external display using the Screen Mirroring.#123
  • Fixed a bug where publishing multiple Tracks with the same name may result in a crash if network quality is enabled.

Distribution Changes

  • Removed the Poco section from Acknowledgements.md since Poco is no longer a dependency

Known Issues

  • The TwilioVideo.xcframework does not currently support the simulator on Apple Silicon arm64 Macs.
  • Carthage is not currently a supported distribution mechanism for Twilio Video. Carthage does not currently work with .xcframeworks as documented here. Once Carthage supports binary .xcframeworks, Carthage distribution will be re-added.
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • H.264 video might become corrupted after a network handoff. #147
  • iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]

Size Impact for 4.0.1

Architecture Compressed Size Uncompressed Size
arm64 4.6 MB 10.8 MB

Twilio Video SDK iOS 3.8.0 - 2020-12-14T21:31:27

This release consumes twilio-video-cpp-5.7.0.

Enhancements

  • isRecording property in TVIRoom now accurately reflects the current recording state of the TVIRoom. In the previous versions of the SDK, isRecording could return false positives. In TVIRoomDelegate the roomDidStartRecording and roomDidStopRecording callbacks will now be invoked when recording for at least a single track in the TVIRoom has begun and ended respectively.

Known Issues

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]

Size Impact for 3.8.0

Architecture Compressed Size Uncompressed Size
arm64 4.6 MB 10.8 MB

Twilio Video SDK iOS 4.0.0 - 2020-12-04T21:11:59

This release consumes twilio-video-cpp-6.0.0.

  • The iOS SDK is based on WebRTC-83.
  • The iOS SDK is built with Xcode 12.0.
  • Twilio Video is now delivered as an .xcframework. The .xcframework package includes the .dSYM and .bcsymbolmap files to allow developers to symbolicate crash reports.
  • Twilio Video is now distributed as a Swift Package.
  • Enabled Metal rendering on the iOS simulator.
  • You can now share video of your app's screen to a Room using AppScreenSource. The Video SDK uses ReplayKit internally for in-app screen capture. AppScreenSource conforms to VideoSource and uses RPScreenRecorder to capture video of your app's screen. Here is a brief example:
if let source = AppScreenSource(), let track = LocalVideoTrack(source: source) {
    room.localParticipant?.publishVideoTrack(track)
    source.startCapture()
}
  • Discontinuous transmission (DTX) is enabled by default for the Opus codec. Disabling DTX will result in higher bitrate for silent audio while using the Opus codec. The TVIOpusCodec class now has a new initializer [TVIOpusCodec initWithDtxEnabled:] and a property dtxEnabled.
  • Added the TVIParticipantState enumeration.
  • Added the TVIParticipant.state property.
  • Added new delegate methods [TVIRoomDelegate room:participantIsReconnecting:] and [TVIRoomDelegte room:participantDidReconnect:] to TVIRoomDelegate. These callbacks will be raised when a TVIRemoteParticipant is attempting to reconnect to a room due to a signaling network interruption. NOTE: It can take up to 15 seconds for our signaling backend to detect that a RemoteParticipant's connection has been disrupted due to a network degradation or handoff.
  • isRecording property in TVIRoom now accurately reflects the current recording state of the TVIRoom. In the previous versions of the SDK, isRecording could return false positives. In TVIRoomDelegate the roomDidStartRecording and roomDidStopRecording callbacks will now be invoked when recording for at least a single track in the TVIRoom has begun and ended respectively.

API Updates

  • Added AppScreenSource to control video capture of your app's screen.
  • Removed the TVIRemoteParticipant.connected property in favor of TVIParticipant.state.

Removed following deprecated APIs

  • Removed the deprecated OpenGL Video Renderer APIs:
    • VideoView.RenderingType
    • [VideoView initWithFrame:delegate:renderingType:renderingType]
  • Removed the deprecated abortOnIceServersTimeout and iceServersTimeout properties from IceOptions and IceOptionsBuilder.

Distribution Changes

  • Twilio Video iOS SDK is no longer being shipped as a static library.

Known Issues

  • The TwilioVideo.xcframework does not currently support the simulator on Apple Silicon arm64 Macs.
  • Carthage is not currently a supported distribution mechanism for Twilio Video. Carthage does not currently work with .xcframeworks as documented here. Once Carthage supports binary .xcframeworks, Carthage distribution will be re-added.
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • H.264 video might become corrupted after a network handoff. #147
  • iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]
  • Publishing multiple tracks with the same name may result in a crash if network quality is enabled. To avoid this, use unique names for each track in the TVIRoom.

Size Impact for 4.0.0

Architecture Compressed Size Uncompressed Size
arm64 4.6 MB 10.8 MB

Twilio Video SDK iOS 4.0.0-beta3 - 2020-11-17T23:14:16

This release consumes twilio-video-cpp-6.0.0-rc10.

Enhancements

You can now share video of your app's screen to a Room using AppScreenSource. The Video SDK uses ReplayKit internally for in-app screen capture. AppScreenSource conforms to VideoSource and uses RPScreenRecorder to capture video of your app's screen. Here is a brief example:

if let source = AppScreenSource(), let track = LocalVideoTrack(source: source) {
    room.localParticipant?.publishVideoTrack(track)
    source.startCapture()
}

API Changes

  • Added AppScreenSource to control video capture of your app's screen.

Known Issues

  • The TwilioVideo.xcframework does not currently support the simulator on Apple Silicon arm64 Macs.
  • Carthage is not currently a supported distribution mechanism for Twilio Video. Carthage does not currently work with .xcframeworks as documented here. Once Carthage supports binary .xcframeworks, Carthage distribution will be re-added.
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]

Size Impact for 4.0.0-beta3

Architecture Compressed Size Uncompressed Size
arm64 4.6 MB 10.8 MB

Twilio Video SDK iOS 3.7.2 - 2020-11-03T20:06:49

This release consumes twilio-video-cpp-5.6.2.

Bug Fixes

  • Fixed a race condition that could cause a crash or unnecessary web socket signaling reconnection.
  • Fixed a race condition that could cause a crash when closing the signaling web socket.
  • Fixed a bug where private IP addresses could be sent to insights when TVIConnectOptions.networkPrivacyPolicy was set to TVILocalNetworkPrivacyPolicyBlockLocal.
  • Two small memory leaks were fixed, one when iced response is received in icing state, and one for signaling data tracks. [ISDK-3046]

Known Issues

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]

Size Impact for 3.7.2

Architecture Compressed Size Uncompressed Size
arm64 4.6 MB 10.8 MB

Twilio Video SDK iOS 4.0.0-beta2 - 2020-10-29T18:55:17

This release consumes twilio-video-cpp-6.0.0-rc10.

Distribution Changes

  • Twilio Video iOS SDK is no longer being shipped as a static library.

Enhancements

  • AudioSink feature support has been added for Local Audio Tracks.

Known Issues

  • The TwilioVideo.xcframework does not currently support the simulator on Apple Silicon arm64 Macs.
  • Carthage is not currently a supported distribution mechanism for Twilio Video. Carthage does not currently work with .xcframeworks as documented here. Once Carthage supports binary .xcframeworks, Carthage distribution will be re-added.
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]

Size Impact for 4.0.0-beta2

Architecture Compressed Size Uncompressed Size
arm64 4.6 MB 10.8 MB

Twilio Video SDK iOS 2.12.0 - 2020-10-22T16:22:06

This release consumes twilio-video-cpp-3.6.1.

Maintenance

  • Re-introduced support for iOS 32-bit architectures (armv7 and i386).

Known Issues

  • SDK does not always switch from mobile network to lower cost WiFi network on 32-bit armv7 devices. [ISDK-3063]
  • Media flow is not always re-established after toggling Airplane mode multiple times on 32-bit armv7 devices. [ISDK-3064]
  • No media flow when connecting Bluetooth speaker while connected to the room on 32-bit armv7 devices. [ISDK-3065]
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]
  • Participant disconnect event can take up to 120 seconds to occur. #99

Size Impact for 2.12.0

Architecture Compressed Size Uncompressed Size
Universal 8.9 MB 19.4 MB
arm64 4.2 MB 10.4 MB
armv7 4.5 MB 8.7 MB

Twilio Video SDK iOS 4.0.0-beta1 - 2020-10-05T17:16:52

This release consumes twilio-video-cpp-6.0.0-rc7.

Enhancements

  • The iOS SDK is based on WebRTC-83
  • The iOS SDK is built with Xcode 12.0
  • Twilio Video is now delivered as an .xcframework. The .xcframework package includes the .dSYM and .bcsymbolmap files to allow developers to symbolicate crash reports.
  • Twilio Video is now distributed as a Swift Package.
  • Removed the deprecated OpenGL Video Renderer APIs:
    • VideoView.RenderingType
    • [VideoView initWithFrame:delegate:renderingType:renderingType]
  • Enabled Metal rendering on the iOS simulator

Bug Fixes

  • A security patch to prevent host candidate DNS attacks has been applied to WebRTC, see: bug #11579. [CSDK-3490]
  • A security patch for SCTP has been applied to WebRTC, see: https://webrtc-review.googlesource.com/c/src/+/176422. [CSDK-3511]
  • Fixed a race condition that could cause a crash or unnecessary web socket signaling reconnection. [CSDK-3479]
  • Fixed a data race condition where threads could simultaneously read and write random seed data. [CLIENT-7984]
  • Video tracks that are created from a TVIVideoSource and configured for screencast can now be simulcasted. [CSDK-3464]

Known Issues

  • AudioSink feature is not supported for Local Audio Tracks in this Beta. Adding a TVIAudioSink to a Local Audio Track does not have any effect. This will be fixed in the subsequent 4.x beta releases.
  • The TwilioVideo.xcframework does not currently support the simulator on Apple Silicon arm64 Macs.
  • Carthage is not currently a supported distribution mechanism for Twilio Video. Carthage does not currently work with .xcframeworks as documented here. Once Carthage supports binary .xcframeworks, Carthage distribution will be re-added.
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]

Size Impact for 4.0.0-beta1

Architecture Compressed Size Uncompressed Size
arm64 4.6 MB 10.8 MB

Twilio Video SDK iOS 3.7.1 - 2020-09-23T18:04:00

This release consumes twilio-video-cpp-5.6.1.

Bug Fixes

  • Fixed an SCTP related WebRTC security vulnerability detailed here.

Known Issues

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]

Size Impact for 3.7.1

Architecture Compressed Size Uncompressed Size
arm64 4.6 MB 10.8 MB

Twilio Video SDK iOS 2.11.0 - 2020-09-16T01:27:11

This release consumes twilio-video-cpp-3.6.0.

This release improves support for local network privacy on iOS 14.0 and iPadOS 14.0. As iOS 14 does not support 32-bit devices, support for the armv7 32 bit processors has been removed from this release.

Enhancements

By default, the SDK no longer uses your local network on iOS 14 and above. Twilio Video balances privacy and performance, blocking communication routes that use your local network inappropriately in Peer-to-Peer Rooms while still ensuring a high rate of direct connections on iOS 14 devices.

If you use Peer-to-Peer Rooms then we recommend that you update your applications to this release in order to prepare for iOS 14. If you need features like multi-party video, network quality or recordings, then use Group Rooms. These Rooms use media servers provided by Twilio that are available on the public internet.

TVILocalNetworkPrivacyPolicy

By default, Twilio Video does not access the local network on iOS 14 and above. If you want to allow Twilio Video to use the local network in a Peer-to-Peer Room then you can override the TVILocalNetworkPrivacyPolicy.

let connectOptions = TVIConnectOptions(token: accessToken) { (builder) in
    // A permissions request may be triggered on iOS 14.
    builder.networkPrivacyPolicy = .allowAll
})

If you select TVILocalNetworkPolicyAllowAll then you must add a privacy usage description with the NSLocalNetworkUsageDescription key in your application's .plist file.

You can find more information about network privacy in our Getting Started Guide.

Bug Fixes

  • Fixed an SCTP related WebRTC security vulnerability detailed here.

Maintenance

  • Removed support for iOS 32-bit architectures (armv7 and i386).

Known Issues

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]
  • Participant disconnect event can take up to 120 seconds to occur. #99

Size Impact for 2.11.0

Architecture Compressed Size Uncompressed Size
Universal 4.3 MB 10.5 MB
arm64 4.2 MB 10.4 MB

Twilio Video SDK iOS 3.7.0 - 2020-09-04T02:20:02

This release consumes twilio-video-cpp-5.6.0.

This release improves support for local network privacy on iOS 14.0 and iPadOS 14.0.

Enhancements

By default, the SDK no longer uses your local network on iOS 14 and above. Twilio Video balances privacy and performance, blocking communication routes that use your local network inappropriately in Peer-to-Peer Rooms while still ensuring a high rate of direct connections on iOS 14 devices.

If you use Peer-to-Peer Rooms then we recommend that you update your applications to this release in order to prepare for iOS 14. If you need features like multi-party video, network quality or recordings, then use Group Rooms. These Rooms use media servers provided by Twilio that are available on the public internet.

TVILocalNetworkPrivacyPolicy

By default, Twilio Video does not access the local network on iOS 14 and above. If you want to allow Twilio Video to use the local network in a Peer-to-Peer Room then you can override the TVILocalNetworkPrivacyPolicy.

let connectOptions = ConnectOptions( token: accessToken, builder {
    // A permissions request may be triggered on iOS 14.
    builder.networkPrivacyPolicy = .allowAll
})

If you select TVILocalNetworkPolicyAllowAll then you must add a privacy usage description with the NSLocalNetworkUsageDescription key in your application's .plist file.

You can find more information about network privacy in our Getting Started Guide.

Known Issues

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]

Size Impact for 3.7.0

Architecture Compressed Size Uncompressed Size
arm64 4.5 MB 10.8 MB

Twilio Video SDK iOS 3.6.1 - 2020-08-06T17:06:12

This release consumes twilio-video-cpp-5.5.1.

Bug Fixes

  • Fixed a memory corruption crash that occurs when recovering from a media server failure in Group Rooms.

Known Issues

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]

Size Impact for 3.6.1

Architecture Compressed Size Uncompressed Size
arm64 4.5 MB 10.8 MB

Twilio Video SDK iOS 3.6.0 - 2020-07-31T20:13:46

This release consumes twilio-video-cpp-5.5.0.

API Changes

  • TVIError is now defined using the NS_ERROR_ENUM macro which makes consuming TVIError objects more idiomatic in Swift, such as using in a switch/case statement.
func roomDidDisconnect(room: Room, error: Error?) {
    if let error = error as? TwilioVideoSDK.Error {
        switch error.code {
            case .roomRoomCompletedError:
                print ("The room completed gracefully")
            case .participantDuplicateIdentityError:
                print("Disconnected becasue another participant with the same identity joined.")
            default:
                print("Something else happened.")
        }
    }
}

Bug Fixes

  • The camera capture background task logic has been refactored and iOS will no longer report a background task risk of termination warning. [ISDK-2878]

Known Issues

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]

Size Impact for 3.6.0

Architecture Compressed Size Uncompressed Size
arm64 4.5 MB 10.8 MB

Twilio Video SDK iOS 3.5.0 - 2020-07-06T19:43:57

This release consumes twilio-video-cpp-5.5.0.

Enhancements

  • Reduced connection times by acquiring IceServers during the initial handshake with Twilio's signaling server rather than sending a request to a different endpoint
  • IceServers are now localized to your Participant's region rather than using Global Low Latency routing
  • The SDK no longer depends on ecs.us1.twilio.com:443

API Changes

  • The following TVIIceOptions properties are deprecated and setting them has no effect:
    • TVIIceOptions.abortOnIceServersTimeout
    • TVIIceOptions.iceServersTimeout

Bug Fixes

  • Fixed a bug where IceServers might not be fetched on a dual-stack device where the IPv6 network interface is not reachable. [CSDK-3295]

Known Issues

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]

Size Impact for 3.5.0

Architecture Compressed Size Uncompressed Size
arm64 4.5 MB 10.8 MB

Twilio Video SDK iOS 3.4.1 - 2020-06-16T20:25:17

This release consumes twilio-video-cpp-5.4.1.

Bug Fixes

  • Fixed the issue where unpublishing and then republishing a TVILocalVideoTrack using VP8 simulcast does not complete. [CSDK-3433]

Known Issues

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]

Size Impact for 3.4.1

Architecture Compressed Size Uncompressed Size
arm64 4.6 MB 10.8 MB

Twilio Video SDK iOS 3.4.0 - 2020-06-05T16:04:25

This release consumes twilio-video-cpp-5.4.0.

Features
Bandwidth Profile

You can now configure how your available downlink bandwidth will be distributed among your subscribed RemoteVideoTracks by using a new optional ConnectOptions parameter bandwidthProfile. For more details and best practices, visit the Network Bandwidth Profile API guide. Here is a brief example:

let videoOptions = VideoBandwidthProfileOptions { builder in
    // Minimum subscribe priority of Dominant Speaker's RemoteVideoTracks
    builder.dominantSpeakerPriority = .high

    // Maximum bandwidth (Kbps) to be allocated to subscribed RemoteVideoTracks
    builder.maxSubscriptionBitrate = 6000

    // Max number of visible RemoteVideoTracks. Other RemoteVideoTracks will be switched off
    builder.maxTracks = 5

    // Subscription mode: collaboration, grid, presentation
    builder.mode = .presentation

    // Configure remote track's render dimensions per track priority
    let renderDimensions = VideoRenderDimensions()

    // Desired render dimensions of RemoteVideoTracks with priority low.
    renderDimensions.low = VideoDimensions(width: 352, height: 288)

    // Desired render dimensions of RemoteVideoTracks with priority standard.
    renderDimensions.standard = VideoDimensions(width: 640, height: 480)

    // Desired render dimensions of RemoteVideoTracks with priority high.
    renderDimensions.high = VideoDimensions(width: 1280, height: 720)

    builder.renderDimensions = renderDimensions

    // Track Switch Off mode: .detected, .predicted, .disabled
    builder.trackSwitchOffMode = .predicted
}
let bandwidthProfileOptions = BandwidthProfileOptions(videoOptions: videoOptions)

// Use bandwidth profile to build the connectOptions
let connectOptions = ConnectOptions(token: accessToken) { builder in
    builder.bandwidthProfileOptions = bandwidthProfileOptions
}

// Connect to a Room with connectOptions
room = TwilioVideoSDK.connect(options: connectOptions, delegate: self)
Track Switch Off

As part of the Bandwidth Profile API, you can now specify the mode to control remote video track switch off behavior. The new Track.SwitchOffMode enum can be specified in the VideoBandwidthProfileOptions class and can be set to one of the following:

  • Track.SwitchOffMode.predicted - In this mode, RemoteVideoTracks are pro-actively switched off when network congestion is predicted by the bandwidth estimation mechanism. This mode is used by default if not specified.
  • Track.SwitchOffMode.detected - In this mode, RemoteVideoTracks are switched off only when network congestion is detected.
  • Track.SwitchOffMode.disabled - In this mode, RemoteVideoTracks will not be switched off. Instead tracks will be adjusted to lower quality.

Track switch off events are provided via two additional callbacks to RemoteParticipantDelegate .

extension ViewController : RemoteParticipantDelegate {
    func remoteParticipantSwitchedOnVideoTrack(participant: RemoteParticipant,
                                               track: RemoteVideoTrack) {}

    func remoteParticipantSwitchedOffVideoTrack(participant: RemoteParticipant,
                                                track: RemoteVideoTrack) {}
}
Track Priority

While publishing a local track, you can now optionally specify it's publish priority.

/*
 * Publish a local track with specified priorities.
 *
 * In addition, local track publications now contain a priority property which reflect the priority of
 * the published track.
 */
let localVideoTrackPublicationOptions = LocalTrackPublicationOptions(priority: .high)
localParticipant.publishVideoTrack(localVideoTrack, publicationOptions: localVideoTrackPublicationOptions);

let localAudioPublicationOptions = LocalTrackPublicationOptions(priority: .high)
localParticipant.publishAudioTrack(localAudioTrack, publicationOptions: localAudioPublicationOptions);

let localDataPublicationOptions = LocalTrackPublicationOptions(priority: .low)
localParticipant.publishDataTrack(localDataTrack, publicationOptions: localDataPublicationOptions);

/*
 * The publish priority is also represented in remote audio, video, and data track publications.
 */
let publishPriority = remoteVideoTrackPublication.publishPriority

Also, the publisher's TrackPriority for the corresponding local Track can be updated after a track has been published.

localVideoTrackPublication.priority = .high

When a TVITrackPriority is updated after the track has been published, remote participants will be alerted to the change via the [TVIRemoteParticipantDelegate remoteParticipant:didChangePublishPriority:forAudioTrack], [TVIRemoteParticipantDelegate remoteParticipant:didChangePublishPriority:forVideoTrack] and [TVIRemoteParticipantDelegate remoteParticipant:didChangePublishPriority:forDataTrack] delegate methods.

extension ViewController : RemoteParticipantDelegate {
    func remoteParticipantDidChangeAudioTrackPublishPriority(participant: RemoteParticipant,
                                                             priority: Track.Priority,
                                                             publication: RemoteAudioTrackPublication) { }

    func remoteParticipantDidChangeVideoTrackPublishPriority(participant: RemoteParticipant,
                                                             priority: Track.Priority,
                                                             publication: RemoteVideoTrackPublication) { }

    func remoteParticipantDidChangeDataTrackPublishPriority(participant: RemoteParticipant,
                                                            priority: Track.Priority,
                                                            publication: RemoteDataTrackPublication) { }
}

Additionally, you can set a subscriber side priority for a TVIRemoteVideoTrack.

/*
 * Set a remote video track priority to HIGH. Note that this feature is only available
 * for RemoteVideoTrack.
 */
remoteVideoTrack.priority = .high

/*
 * Get the current remote video track priority.
 */
let remoteVideoTrackPriority = remoteVideoTrack.priority

This signals to the media server the relative importance of the track with respect to other tracks that may be shared to the Room. The media server takes this into account while allocating a subscribing RemoteParticipant's bandwidth to the corresponding remote track. If you do not specify a priority, the RemoteVideoTrack.priority property will return nil, and the media server will use the RemoteVideoTrackPublication.publishPriority assigned by the publisher instead.

New APIs

  • Added TVITrackPriority for track priorities of Room.
  • Added a new readonly property publishPriority of type TVITrackPriority in TVIRemoteAudioTrackPublication, TVIRemoteVideoTrackPublication, and TVIRemoteDataTrackPublication. These readonly properties fetch the priorities at which the remote Audio, Video, and Data Tracks were published.
  • Added a new class TVILocalTrackPublicationOptions to specify track publication options when publishing tracks via TVILocalParticipant.
  • Added additional publish track methods that allow developers to specify TVILocalTrackPublicationOptions -
    • [TVILocalParticipant publishAudioTrack:publicationOptions:]
    • [TVILocalParticipant publishVideoTrack:publicationOptions:]
    • [TVILocalParticipant publishDataTrack:publicationOptions:]
  • Added a new property priority of type TVITrackPriority in TVILocalAudioTrackPublication, TVILocalVideoTrackPublication and TVILocalDataTrackPublication classes.
  • Added the [TVIRemoteParticipantDelegate remoteParticipant:didChangePublishPriority:forAudioTrack], [TVIRemoteParticipantDelegate remoteParticipant:didChangePublishPriority:forVideoTrack] and [TVIRemoteParticipantDelegate remoteParticipant:didChangePublishPriority:forDataTrack] delegate methods.

Bug Fixes

  • Fixed a crash when the SDK was processing a local SDP that had incorrect number of SSRCs when applying VP8 simulcast.

Known Issues

  • Unpublishing and then republishing a TVILocalVideoTrack using VP8 simulcast does not complete. As a workaround, disable the Track instead. [CSDK-3433]
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]

Size Impact for 3.4.0

Architecture Compressed Size Uncompressed Size
arm64 4.6 MB 10.8 MB

Twilio Video SDK iOS 3.3.0 - 2020-05-29T22:31:49

This release consumes twilio-video-cpp-5.3.0.

Enhancements

  • Previously, twilio-video would fail connection attempts if the signaling server was busy with too many requests. Now, it will try again after a server specified backoff period either until it is successfully connected or the server asks it to stop trying. In this case, the -[TVIRoomDelegate room:didFailToConnectWithError:] method is called with TVIErrorSignalingServerBusyError.
func roomDidFailToConnect(room: Room, error: Error) {
    let theError = error as NSError
    if theError.domain == TwilioVideoSDK.ErrorDomain,
        theError.code == TwilioVideoSDK.Error.signalingServerBusyError {
        print("Twilio's signaling server cannot accept connection requests at this time.")
    }
}

API Changes

  • Added error code definitions:
    • TVIErrorSignalingServerBusyError
    • TVIErrorRoomAccountLimitExceededError
    • TVIErrorParticipantAccountLimitExceededError
    • TVIErrorTrackDataTrackMessageTooLargeError
    • TVIErrorTrackDataTrackSendBufferFullError
    • TVIErrorMediaDtlsTransportFailedError
    • TVIErrorMediaIceRestartNotAllowedError

Known Issues

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • Pre iPhone X iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]

Size Impact for 3.3.0

Architecture Compressed Size Uncompressed Size
arm64 4.5 MB 10.7 MB

Twilio Video SDK iOS 3.2.5 - 2020-04-23T21:17:03

This release consumes twilio-video-cpp-5.2.2.

Enhancement

  • TVICameraSource now stops the underlying AVCaptureSession during deallocation if the developer had not stopped it using one of the stopCapture methods. It is still suggested that the developer calls one of the stopCapture methods at a time that is appropriate for their application and not relying on the SDK to do it. #445
  • Publish stats reports every 10 seconds and active ICE candidate pair messages every 20 seconds. Previously both were reported every 4 seconds.

Known Issues

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • Pre iPhone X iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]

Size Impact for 3.2.5

Architecture Compressed Size Uncompressed Size
arm64 4.5 MB 10.7 MB

Twilio Video SDK iOS 3.2.4 - 2020-04-17T18:21:51

This release consumes twilio-video-cpp-5.2.1.

Bug Fixes

  • Fixed a bug when establishing a signaling WebSocket that might cause only one address family (IPv4 or IPv6) to be tried.
  • Fixed a network handoff bug where where the media was not switching over to low cost network.

Known Issues

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • Pre iPhone X iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]

Size Impact for 3.2.4

Architecture Compressed Size Uncompressed Size
arm64 4.5 MB 10.7 MB

Twilio Video SDK iOS 3.2.3 - 2020-04-01T17:07:13

This release consumes twilio-video-cpp-5.1.1.

Bug Fixes

  • Fixed a potential crash when destroying a TVILocalVideoTrack while the Track's TVICameraSource (or custom TVIVideoSource) is still delivering frames. [ISDK-2792]

Known Issues

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • Pre iPhone X iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]

Size Impact for 3.2.3

Architecture Compressed Size Uncompressed Size
arm64 4.5 MB 10.6 MB

Twilio Video SDK iOS 3.2.2 - 2020-02-21T16:50:16

This release consumes twilio-video-cpp-5.1.1.

Bug Fixes

  • Fixed the issue where the NS_SWIFT_NAME mapping for CameraSourceOptionsBuilder.Block would fail. #72

Known Issues

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • Pre iPhone X iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]

Size Impact for 3.2.2

Architecture Compressed Size Uncompressed Size
arm64 4.5 MB 10.6 MB

Twilio Video SDK iOS 3.2.1 - 2020-02-10T21:51:46

This release consumes twilio-video-cpp-5.1.1.

Bug Fixes

  • Fixed parsing issue when a Remote Participant's Network Quality Level is zero. [CSDK-3325]

Known Issues

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • Pre iPhone X iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]

Size Impact for 3.2.1

Architecture Compressed Size Uncompressed Size
arm64 4.5 MB 10.6 MB

Twilio Video SDK iOS 3.2.0 - 2020-02-05T17:59:17

This release consumes twilio-video-cpp-5.1.0.

API Changes

  • Implemented Network Quality for Remote Participants in Group Rooms:
    • To enable the Network Quality functionality, set the TVIConnectOptions.networkQualityEnabled property to YES when connecting to a Group Room. By default this enables network quality level changes to be reported for the Local Participant. To also receive network quality level changes for the Remote Participants, a configured TVINetworkQualityConfiguration object needs to be supplied to the TVIConnectOptions.networkQualityConfiguration property.
    • The networkQualityLevel property has been promoted from the TVILocalParticipant class to the TVIParticipant base class.
    • To determine the current network quality level for both Local and Remote Participants, query the networkQualityLevel property. Note, this will return TVINetworkQualityLevelUnknown if:
      • The TVIConnectOptions.networkQualityEnabled property was set to NO OR
      • Using a Peer-to-Peer room OR
      • The network quality level has not yet been computed
    • Implementing the [TVILocalParticipantDelegate localParticipant:networkQualityLevelDidChange:] method on your TVILocalParticipantDelegate will allow you to receive callbacks when the network quality level changes for the Local Participant.
    • Implementing the [TVIRemoteParticipantDelegate remoteParticipant:networkQualityLevelDidChange:] method on your TVIRemoteParticipantDelegate will allow you to receive callbacks when the network quality level changes for the Remote Participant.
@IBAction func connectToRoom(sender: AnyObject) {
    let connectOptions = ConnectOptions(token: accessToken) { (builder) in
        builder.isNetworkQualityEnabled = true
        builder.networkQualityConfiguration = NetworkQualityConfiguration(localVerbosity: .minimal,
                                                                          remoteVerbosity: .minimal)
        builder.roomName = "my-room"
    }

    room = TwilioVideoSDK.connect(options: connectOptions, delegate: self)
}

...

// MARK: LocalParticipantDelegate
func localParticipantNetworkQualityLevelDidChange(participant: LocalParticipant, networkQualityLevel: NetworkQualityLevel) {
    print("Local Participant Network Quality Level Changed: \(networkQualityLevel)")
}

// MARK: RemoteParticipantDelegate
func remoteParticipantNetworkQualityLevelDidChange(participant: RemoteParticipant, networkQualityLevel: NetworkQualityLevel) {
    print("Remote Participant (\(participant.identity)) Network Quality Level Changed: \(networkQualityLevel)")
}

Enhancements

  • Reduced bandwidth usage for Insights reporting by up to 75%.
  • Data track per-message size limit has been increased to 64 KB. [CSDK-3197]

Bug Fixes

  • Fixed intermittent crash when sending data on a data track while in the process of closing the track due to remote participant disconnect. [CSDK-3245]
  • TVIIceCandidatePairStats.availableOutgoingBitrate is populated with the available send bandwidth when publishing Tracks.
  • TVIIceCandidatePairStats.availableIncomingBitrate is populated with the available receive bandwidth when subscribing to Tracks in a Group Room.
  • Fixed a crash which could occur when destroying a TVIRoom while the TCP handshake for the signaling connection is in progress.

Known Issues

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • Pre iPhone X iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]

Size Impact for 3.2.0

Architecture Compressed Size Uncompressed Size
arm64 4.5 MB 10.6 MB

Twilio Video SDK iOS 3.1.0 - 2019-12-17T18:35:57

This release consumes twilio-video-cpp-4.0.2.

Enhancements

  • Reduced memory allocations when cropping is applied with -[TVIVideoSource requestOutputFormat:] by caching the cropping attributes.
  • Added TVICameraSourceOptions.rotationTags, which defaults to TVICameraSourceOptionsRotationTagsKeep. You might want to set this option to TVICameraSourceOptionsRotationTagsRemove in order to:
    • Save power and battery life when you know that the video will be published in a Group Room
    • Receive images that are properly oriented for Computer Vision analysis
    • Use AVAssetWriter for recordings without worrying about transformation matrices
  • Performance Improvements:
    • With TVICameraSourceOptionsRotationTagsRemove, we see significant improvement with the H.264 video codec on modern iPhones.
    • With TVICameraSourceOptionsRotationTagsRemove, we see small improvement with the VP8 video codec (non-simulcast) on modern iPhones.
Codec TVICameraSourceOptionsRotationTagsKeep (Average CPU) (*) TVICameraSourceOptionsRotationTagsRemove (Average CPU) (*)
H.264 7.3% 6.75% (**)
VP8 12.8% 12.7% (**)
* Tested on iPhone 11
* Group Room
* Capture resolution, fps, encoding params: 640x480x30 @ 1200 kbps
* Video call duration: 5 mins / run
* Measured using Instruments
** Load scheduled mostly on high efficiency cores, with performance cores disabled.

Known Issues

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • Pre iPhone X iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]

Size Impact for 3.1.0

Architecture Compressed Size Uncompressed Size
arm64 4.5 MB 10.7 MB

Twilio Video SDK iOS 3.0.1 - 2019-11-05T18:33:02

This release consumes twilio-video-cpp-4.0.1.

Bug Fixes

  • Fixed a possible deadlock that could occur when destroying a TVIRoom without first calling -[TVIRoom disconnect].
  • Fixed a crash which could occur when destroying a TVIRoom with dominant speaker enabled.

Known Issues

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • Pre iPhone X iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]

Size Impact for 3.0.1

Architecture Compressed Size Uncompressed Size
arm64 4.5 MB 10.7 MB

Twilio Video SDK iOS 2.10.2 - 2019-10-29T16:49:11

This release consumes twilio-video-cpp-3.5.0.

Bug Fixes

  • Fixed a crash on the iOS 13 simulator when rendering received H.264 video, or any other video in the TVIPixelFormatYUV420BiPlanarFullRange or TVIPixelFormatYUV420BiPlanarVideoRange formats. [ISDK-2631]
  • Fixed a bug where TVICameraSource might produce distorted frames after being interrupted with AVCaptureSessionInterruptionReasonVideoDeviceInUseByAnotherClient on iOS 13.0. #53

Known Issues

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]
  • Participant disconnect event can take up to 120 seconds to occur. #99

Size Impact for 2.10.2

Architecture Compressed Size Uncompressed Size
Universal 8.9 MB 19.3 MB
arm64 4.2 MB 10.3 MB
armv7 4.5 MB 8.7 MB

Twilio Video SDK iOS 3.0.0 - 2019-10-05T00:35:34

This release consumes twilio-video-cpp-4.0.0.

3.0 is now generally available. Thank you for all the feedback from our beta adopters.

This release includes:

  • Global low latency (GLL) signaling with IPv4 and IPv6 support.
  • Improved Swift APIs for a more idiomatic Swift development experience.
  • Support for UIScene and multi-window apps on iOS 13 and iPadOS 13.

Bug Fixes

  • Fixed a regression in 3.0.0-beta5 and 3.0.0-beta6 where the Participant's TLS handshake might be delayed by up to 250 milliseconds. [CSDK-3117]

Known Issues

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • Pre iPhone X iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]

Size Impact for 3.0.0

Architecture Compressed Size Uncompressed Size
arm64 4.5 MB 10.7 MB

Twilio Video SDK iOS 3.0.0-beta6 - 2019-09-30T18:53:59

This release consumes twilio-video-cpp-4.0.0-beta5.

API Changes

  • The minimum supported iOS version has been raised to 11.0.
  • TVICameraSource can monitor UIWindowScene for orientation and state changes in iOS 13.0+.
  • Removed manual orientation control APIs from TVICameraSource and introduced the TVICameraSourceOrientationTracker protocol along with the TVIUserInterfaceTracker class.
  • The following example demonstrates how to track a UIWindowScene:
// Track the orientation of the key window's scene.
let options = CameraSourceOptions { (builder) in
    if let keyScene = UIApplication.shared.keyWindow?.windowScene {
        builder.orientationTracker = UserInterfaceTracker(scene: keyScene)
    }
}
let camera  = CameraSource(options: options, delegate: self)
// Forward UIWindowScene events
func windowScene(_ windowScene: UIWindowScene,
                 didUpdate previousCoordinateSpace: UICoordinateSpace,
                 interfaceOrientation previousInterfaceOrientation: UIInterfaceOrientation,
                 traitCollection previousTraitCollection: UITraitCollection) {
    UserInterfaceTracker.sceneInterfaceOrientationDidChange(windowScene)
}

Known Issues

  • Server side deflate compression is disabled due to occasional errors when reading messages. [CSDK-2949]
  • In a two Participant P2P room, the last Participant might not be disconnected when there are terminal media failures. [CSDK-3063]
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]

Size Impact for 3.0.0-beta6

Architecture Compressed Size Uncompressed Size
arm64 4.5 MB 10.7 MB

Twilio Video SDK iOS 3.0.0-beta5 - 2019-09-26T00:27:17

This release consumes twilio-video-cpp-4.0.0-beta5.

API Changes

  • Added TVILocalParticipant.signalingRegion. You can use this property to determine where your Participant connected to a Room, especially when using the default value of "gll" for TVIConnectOptions.region.
  • Updated the TVIConnectOptionsBuilder.region property to no longer throw an exception when an empty string is provided and instead defaults to gll.
  • Added TVIRoom.mediaRegion. You can use this property to determine where media is being processed in a Group Room.
  • When a Participant connects to a Room, the WebSocket handshake is required to complete in 15 seconds or less, otherwise a TVIErrorSignalingConnectionError is raised.
  • TVIEncodingParameters now expresses maximum bitrates in Kilobits per second (Kbps) instead of bits per second (bps).
// Before
let params = EncodingParameters(audioBitrate: UInt(0),
                                videoBitrate: UInt(800000)
// After
let params = EncodingParameters(audioBitrate: UInt(0),
                                videoBitrate: UInt(800)

Enhancements

  • The iOS SDK is built with Xcode 11.0
  • TVIVideoView registers for UIScene lifecycle notifications when it is contained within a UIWindowScene on iOS 13.0+. Rendering is permitted in the following states:
    • UISceneActivationStateForegroundActive at 60 Hz
    • UISceneActivationStateForegroundInactive at 30 Hz
  • TVIVideoView suspends its internal CADisplayLink timer when it is removed from a UIWindow.
  • Increased the reliability of TVILocalDataTrack by monitoring its send buffer. Sending too many messages, or sending single messages larger than 16 KB no longer causes the underlying channel(s) to close. These requests are ignored instead. [CSDK-3037]

Bug Fixes

  • Fixed a bug where TVICameraSource might produce distorted frames after being interrupted with AVCaptureSessionInterruptionReasonVideoDeviceInUseByAnotherClient on iOS 13.0. #53
  • Making the SDK more aggressive at establishing a connection by trying to connect multiple sockets to different endpoints in parallel. [CSDK-2942]
  • TVILocalDataTrack should no longer end up in an inconsistent state after attempting to send a message larger than 16 KB. [CSDK-3081]

Known Issues

  • Server side deflate compression is disabled due to occasional errors when reading messages. [CSDK-2949]
  • In a two Participant P2P room, the last Participant might not be disconnected when there are terminal media failures. [CSDK-3063]
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
  • Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]

Size Impact for 3.0.0-beta5

Architecture Compressed Size Uncompressed Size
Universal 9.5 MB 20.5 MB
arm64 4.6 MB 10.8 MB
armv7 4.9 MB 9.7 MB