Changelog: Twilio Video iOS 1.x
Deprecation Notice - all 1.x Versions |
---|
Please note that all Programmable Video iOS SDK 1.x versions are deprecated. Version 3.x is the latest version of the Programmable Video iOS SDK. Please see the Getting Started Guide for more information. |
Compatibility Notice - All versions |
---|
Please note that all 1.x versions are incompatible with Firefox 63+ in a Peer-to-Peer Room. For more information please review the GitHub Issue. |
The Twilio Programmable Video SDKs use Semantic Versioning.
Enhancements
TwilioVideo.framework
is now built with Xcode 9.4.1.
Known Issues
Improvements
- Updated certificate bundle to include "Starfield Class 2 CA" and "Starfield Services Root Certificate Authority - G2" using release-2.0.0 of cert-bundle.
Bug Fixes
- Fixed an instance where the signaling Client could send an extra UPDATE message or fail a reconnect operation.
Known Issues
Improvements
TwilioVideo.framework
and our C++ core library are now built with the Xcode 9.3 toolchain.- Initial Connect message now includes Client version metadata.
Bug Fixes
- Fixed a bug where the SDK hangs if DNS resolution fails and the user does not initiate disconnect.
- The signaling Client no longer logs access tokens.
- Resolved an issue where the signaling Client could send too many UPDATE messages, or use too many CPU cycles and disconnect from a Room.
Known Issues
Features
- Added a
framesEncoded
stats field toTVILocalVideoTrackStats
.
Bug Fixes
- Fixed a bug where
[TVIRoomDelegate::roomDidDisconnect:error:]
was not invoked due to a race condition between a network handover and a user initiated[TVIRoom disconnect] call
. #235
Known Issues
Enhancements
TwilioVideo.framework
and our C++ core library are now built with the Xcode 9.2 toolchain.- Simplified the internal process for retrieving ice servers and resolving outbound DNS.
Bug Fixes
- Fixed an issue where the application thread could be blocked for up to 30 seconds when connecting to and deleting a
TVIRoom
in bad network conditions.
Known Issues
Enhancements
- The media engine now uses a dedicated thread for networking operations.
Bug Fixes
- Resolved a condition where ICE candidates might not be applied in Peer-to-Peer Rooms.
- ICE URIs using the
stuns
andturns
schemes are now supported. The SDK will now useturns
servers if needed when turn is enabled for your Room. - Resolved an issue where the device model was being incorrectly reported to Insights.
Known Issues
Enhancements
TwilioVideo.framework
and our C++ core library are now built with the Xcode 9.1 toolchain.
Bug Fixes
- Clarified header docs for
[TVIRoomDelegate room\:didFailToConnectWithError:]
,[TVIRoomDelegate roomDidStartRecording:]
and[TVIRoomDelegate roomDidStopRecording:]
. - Don't publish Ice Candidate stats unless an active pair is present.
Known Issues
Enhancements
TwilioVideo.framework
and our C++ core library are now built with the Xcode 9.0 toolchain.- Added several properties to
TVIIceCandidatePairStats
activeCandidatePair
- indicates if the candidate pair is active.localCandidateIp
- the IP address of the local candidate associated with this candidate pair.remoteCandidateIp
- the IP address of the remote candidate associated with this candidate pair.relayProtocol
- the relay protocol
Known Issues
Bug Fixes
TVIAudioSink
now pre-allocates buffers used on a real-time CoreAudio thread. #104 [ISDK-1412]
Known Issues
Bug Fixes
TVIAudioSink
s added to aTVILocalAudioTrack
now raise callbacks. Audio recording does not start until you join an empty Group Room or a Peer-to-Peer Room with one or more Participants. #104
Known Issues
Enhancements
- WebRTC and other third party dependencies are now built with Xcode 8.3.3 to match our C++ core library. We will be upgrading our build toolchain to Xcode 9.x in a future release.
Known Issues
Bug Fixes
- Fixed some properties which were missed during docs generation.
- Fixed a potential crash when calling
[TVIRoom disconnect:]
before[TVIRoomDelegate didConnectToRoom:]
is called and then destroying theTVIRoom
in the[TVIRoomDelegate room\:didDisconnectWithError:]
callback. - Fixed incorrect values for
TVIIceCandidateStats.port
andTVIIceCandidateStats.isRemote
.
Known Issues
This release improves compatibility with iOS 11.0, resolving debugger warnings and assertions that could occur when developing against the SDK.
Bug fixes
- Resolved a Metal debug assertion caused by improper usage of depth attachments in
TVIVideoView
. #141 - Use the modern
[CADisplayLinkTimer preferredFramesPerSecond]
APIs instead of intervals on iOS 10.0 or newer. TVIScreenCapturer
no longer queriesUIApplicationState
from outside the main thread.- Cleanup
TVIAudioSink
s automatically after aTVIAudioTrack
is removed from aTVIParticipant
in order to prevent crashes.
Known issues
Features
TVIVideoView
's Metal implementation now supports sharing ofCVPixelBuffer
s with the GPU, and can render frames in anyTVIPixelFormat
without additional CPU conversions. In order to qualify for the fast sharing pathCVPixelBuffer
s should be created withkCVPixelBufferMetalCompatibilityKey
andkCVPixelBufferIOSurfacePropertiesKey
.
Bug fixes
- Fixed the issue where the
TVIConnectOptions
andTVIConnectOptionsBuilder
'saudioTracks
andvideoTracks
properties were not respecting theirnonnull
annotation. - Fixed the documentation error on
TVIIceCandidatePairStatus currentRoundTripTime
. - Fixed a bug in
TVIScreenCapturer
and in the software video pipeline where RGBCVPixelBuffer
formats were incorrectly assumed to use host ordering (little endian on Ax ARM-based CPUs) instead of their in memory representation. Because of thisTVIPixelFormat32BGRA
was treated asTVIPixelFormat32ARGB
and vice versa.
Known issues
Bug fixes
- Fixed an issue which prevented multiple Participants from adding/removing Tracks in Group Rooms.
- The
TVIError
enumeration is now declared as anNSInteger
to match whatNSError
is expecting.
Known issues
Bug fixes
- The platform name and manufacturer is reported correctly to Insights.
- C++ core library is built with the Xcode 8.3.3 toolchain (matching video-ios).
Known issues
Features
- Active Ice candidate pair stats are now available as part of the
TVIStatsReport
objects returned from theTVIRoom:getStatsWithBlock:
API. - One fewer thread is created per
TVIRoom
.
Bug fixes
- Internal timers used by the SDK are more reliable.
Known issues
Features
- The SDK now uses TLS 1.2 in favor of TLS 1.0 to connect to Twilio's servers.
Bug fixes
- Local participant state is now promptly synced with Twilio signaling servers when there is a network handoff.
Known issues
Features
- Added the ability to access raw audio samples using the
TVIAudioSink
protocol. At the moment this is only supported on remoteTVIAudioTrack
instances. #104
Bug fixes
- Audio playout and recording does not work correctly on iOS simulators. #73
Known issues
Features
- This release adds Insights statistics collection, which reports RTP quality metrics back to Twilio. In the future, these statistics will be included in customer-facing reports visible in the Twilio Console. Insights collection is enabled by default, if you wish to disable it use the
insightsEnabled
property onTVIConnectOptionsBuilder
:
1TVIConnectOptions *options = [TVIConnectOptions optionsWithToken:token2block:^(TVIConnectOptionsBuilder * _Nonnull builder) {3builder.insightsEnabled = NO;4}];
- The SDK now uses TLS port 443 to connect to Twilio's signaling servers.
Bug fixes
- Network handoff from Wifi to Wifi is unreliable. #127
- Resolved a crash which could occur in
TVICameraCapturer
when changing cameras where theAVCaptureSession
was left in an uncommitted state. - Fixed instances where UIKit methods were being accessed outside of the main thread.
- Fixed a bug where media and signaling could become split across network interfaces after a network handover.
- Fixed a bug where Twilio's signaling backend was not being notified of Track changes when there were no other Participants in a Peer-to-Peer Room.
Known issues
Bug fixes
- Resolved a crash which could occur when destroying
TVILocalVideoTrack
with attached renderers. - Backported fix for Chromium bug 679306.
Known issues
Bug fixes
- No Media received when adding audio/video tracks quickly while connected to a Room. #101
- Fixed a bug in the OpenGL ES implementation of
TVIVideoView
where rotation was incorrect after disabling and then enablingTVILocalVideoTrack
. #119 - Fixed a bug where encoded video was corrupted when sending 720p or larger on devices with 3 or more CPU cores (iPad Air 2, iPad Pro, or iPad 2017).
- Resolved a crash when downscaling 960x540 video in response to network congestion. #116
- Network handoff is not supported to/from a NAT'd IPv6 network. #87
Known issues
- VP8 is the only supported codec. #88
- Audio playout and recording does not work correctly on iOS simulators. #73
- Network handoff from Wifi to Wifi is unreliable. #127
- Participant disconnect event can take up to 120 seconds to occur. #99
- AVPlayer audio content does not mix properly with Room audio. #402
We've promoted 1.0.0-beta16
to 1.0.0
. As part of our first General Availability release we are now publishing our podspecs to the CocoaPods Master Spec Repo, instead of Twilio's Spec Repo.
Known issues
- Network handoff is not supported to/from a NAT'd IPv6 network. #87
- VP8 is the only supported codec. #88
- Audio playout and recording does not work correctly on iOS simulators. #73
- Participant disconnect event can take up to 120 seconds to occur. #99
- Missing Media when adding audio/video tracks quickly while connected to a Room. #101
- AVPlayer audio content does not mix properly with Room audio. #402
Bug fixes
- Fixed an issue where the SDK was incorrectly choosing
TVIAudioOutputVoiceChatDefault
by default, causing audio to be routed to the receiver on iPhones.
Known issues
- Network handoff is not supported to/from a NAT'd IPv6 network. #87
- VP8 is the only supported codec. #88
- Audio playout and recording does not work correctly on iOS simulators. #73
- Participant disconnect event can take up to 120 seconds to occur. #99
- Missing Media when adding audio/video tracks quickly while connected to a Room. #101
- AVPlayer audio content does not mix properly with Room audio. #402
Features
TVIVideoClient
has been renamed toTwilioVideo
.TVILocalMedia
has been removed fromTVILocalParticipant
. It is now possible to createTVILocalAudioTrack
andTVILocalVideoTrack
using class factory methods, and add them toTVILocalParticipant
directly.TVIConnectOptions
accepts Tracks instead of LocalMedia.TVIAudioController
is now a singleton, instead of a property onTVILocalMedia
.TVIMedia
has been removed fromTVIParticipant
. Use theaudioTracks
andvideoTracks
properties in place ofmedia
to access Participant Tracks.TVIVideoCaptureSource
has been renamed toTVICameraCaptureSource
.- [TVICameraCapturer selectSource:]
now returns aBOOL
that indicates whether the providedTVICameraCaptureSource
is available on the device.- Removed the
selectNextSource
API fromTVICameraCapturer
. - Changed the
cameraCapturerWasInterrupted:
delegate method tocameraCapturerWasInterrupted:reason:
. TVICameraCapturer
no longer generates theTVICameraPreviewView
by default. To enablepreviewView
generation, call theinitWithSource:delegate:enablePreview:
initializer.- Removed the
cameraCapturerPreviewDidStart:
delegate method. - Added a
mirror
property toTVIVideoView
. - Mirroring is no longer automatically applied to any
TVIVideoView
s that are rendering aTVILocalVideoTrack
created with aTVICameraCapturer
.
Bug fixes
- Fixed a bug where out of order offer and answer messages could result in a failure when DTLS roles are negotiated.
Known issues
- Network handoff is not supported to/from a NAT'd IPv6 network. #87
- VP8 is the only supported codec. #88
- Audio playout and recording does not work correctly on iOS simulators. #73
- Participant disconnect event can take up to 120 seconds to occur. #99
- Missing Media when adding audio/video tracks quickly while connected to a Room. #101
- AVPlayer audio content does not mix properly with Room audio. #402
Features
TVIVideoViewRenderer
has been renamed toTVIVideoView
, and is now a subclass ofUIView
.- Removed the
attach
,detach
andvideoDimensions
APIs fromTVIVideoTrack
. - Removed the
TVIVideoTrackDelegate
protocol. Applications interested in size and orientation metadata should useTVIVideoViewDelegate
instead. TVIAudioConstraints
has been renamed toTVIAudioOptions
to be consistent with their counterparts in WebRTC.TVIAudioOptions
now only exposes Audio Options that are available for use on iOS.
Bug fixes
- Fixed a crash which could occur due to a race condition between Room destruction and reachability change events.
- Fixed an SDK teardown crash which could occur in
PeerConnectionSignaling::closePrivate
.
Known issues
- Network handoff is not supported to/from a NAT'd IPv6 network. #87
- VP8 is the only supported codec. #88
- Audio playout and recording does not work correctly on iOS simulators. #73
- Participant disconnect event can take up to 120 seconds to occur. #99
- Missing Media when adding audio/video tracks quickly while connected to a Room. #101
Features
- Bitcode is now supported. #40
- This release is based on Chromium WebRTC 57.
Known issues
- Network handoff is not supported to/from a NAT'd IPv6 network. #87
- VP8 is the only supported codec. #88
- Audio playout and recording does not work correctly on iOS simulators. #73
- Participant disconnect event can take up to 120 seconds to occur. #99
- Missing Media when adding audio/video tracks quickly while connected to a Room. #101
Bug fixes
- Fixed an SDK teardown crash which could occur in
twilio::video::EndpointConfigurationProvider
. - Fixed a crash which could occur while invalidating the tracks in
twilio::video::Participant
's destructor.
Known issues
Features
- Added a new
TVIConnectOptions
propertyreconnectAfterReturningToForeground
to allow disabling automatic reconnect behavior.
Bug fixes
- Fixed an SDK teardown crash which could occur if Room is destroyed right after the
room.disconnect()
API is called. #95 - Resolved memory corruption issues which could occur in multi-party scenarios. #74
- Fixed a crash which could occur in
twilio::signaling::RoomSignalingImpl
. #78 - Fixed a crash which could occur in
twilio::signaling::PeerConnectionSignaling
. #85 - Fixed a regression in
1.0.0-beta9
where a track added event was not raised when the trackId was reused. - Decreased Room connection time by establishing the signaling connection earlier in the process.
- Removed the final case where we resolve localhost. This also improves connection time to your first Room. #92
Known issues
Features
- Added a
getStats:
method toTVIRoom
that builds aTVIStatsReport
with metrics for all the audio and video tracks being shared to a Room.
Bug fixes
- Resolved a memory issue where destroying
TVICameraCapturer
would leak itsAVCaptureSession
. - Validate
TVIVideoCapturer
API calls inTVIScreenCapturer
andTVICameraCapturer
.
Known issues
Features
- Improved support for backgrounding where CallKit is not used and audio is inactive. #89
- We've begun formalizing our error codes. They are divided up into Signaling (530xx), Room (531xx), Participant (532xx), Track (533xx), Media (534xx), Configuration (535xx), and Access Token (201xx) subranges. Instances of
NSError
will now carry a numeric code belonging to one of these ranges. #67 - Moved connect from an instance method to a class method on
TVIVideoClient
. Calling the new class connect method requiresTVIConnectOptions
andTVIRoomDelegate
arguments.TVIVideoClient
is no longer an object that can be instantiated and an instance is no longer required to connect to a Room. - Moved access token parameter from the
TVIVideoClient
class factory to theTVIConnectOptions
initializer.
Connecting to a Room in beta9 using Swift:
1let connectOptions = TVIConnectOptions.init(token: accessToken) { (builder) in2builder.roomName = "my-room"3builder.localMedia = self.localMedia4}5room = TVIVideoClient.connect(with: connectOptions, delegate: self)
Bug fixes
- Access token parsing is no longer required on the Client.
- Use a certificate bundle to validate SSL certificates on the signaling connection.
- Improved compatibility with Group Rooms and track added and removed events.
- Set the
NET_SERVICE_TYPE_SIG
option on signaling sockets in iOS 10. - Resolved a deadlock which could occur while processing track events.
- Fixed a memory management issue where
TVITrack
resources could be destroyed while in flight to a delegate. - Resolved some instances of bad memory accesses when destroying C++ signaling classes.
- Removed
.xcconfig
files which were mistakenly included in1.0.0-beta8
. - Disallowed
init
on all builder classes. - Validate arguments for
TVIVideoFrame
, andTVIIceServer
. - Fixed the exception reason for
TVIVideoTrack
.
Known issues
Bug fixes
- Fixed a memory leak with
TVIVideoRenderer
andTVIVideoFrame
on iOS 8. - Fixed a crash which could occur when track enabled or disabled events arrive during media negotiation.
- Participant identities can now include unicode characters (server side fix).
- Removed VOIP socket tagging on signaling connections.
Known issues
- Network handoff is not supported to/from a NAT'd IPv6 network.
- VP8 is the only supported codec.
- Bitcode is not supported.
- Audio playout and recording does not work correctly on iOS simulators.
- If your non-CallKit enabled application joins a Room where no audio is being sent or received then signaling and media connections will fail upon turning off the display and entering a deep background state. In some cases this can result in a crash.
Features
- Added support for App Extensions.
- Improved performance of the OpenGL ES implementation of
TVIVideoViewRenderer
by sharing frames with the GPU where possible.
Bug fixes
- Fixed a regression from
1.0.0-beta6
where tokens with purely numeric identities caused a crash. - Eliminated a call to
mDNSResponder
when constructingTVIVideoClient
. - Improved the reliability of DNS resolution for signaling, and resolved a potential crash on failure.
Known issues
- Network handoff is not supported to/from a NAT'd IPv6 network.
- VP8 is the only supported codec.
- Bitcode is not supported.
- Signaling connections are incorrectly tagged as VOIP sockets.
- Audio playout and recording does not work correctly on iOS simulators.
- If your non-CallKit enabled application joins a Room where no audio is being sent or received then signaling and media connections will fail upon turning off the display and entering a deep background state. In some cases this can result in a crash.
Features
- Network handoff is supported in IPv4 environments.
- Added an
isRecording
property toTVIRoom
, and delegate callbacks toTVIRoomDelegate
. Please note that recording is only available in our Group Rooms developer preview. The property will always returnNO
in a P2P Room.
Bug fixes
- Resolved an issue where destroying a
TVITrack
instance after other SDK resources could cause a crash. - Fixed memory leaks when parsing JSON signaling messages.
- Aggressively close old signaling connection on a redirect.
- Improved signaling logic when handling glare scenarios.
- Resolved a memory management issue with outgoing signaling messages.
- Resolved a synchronization issue in the video capture pipeline which could cause frames to be corrupted.
- Resolved a crash which could occur when parsing ICE candidates.
- Attempt ICE restarts in response to PeerConnection failures.
Known issues
- Network handoff is not supported to/from a NAT'd IPv6 network. This is an issue on cellular carriers such as T-Mobile.
- VP8 is the only supported codec.
- Bitcode is not supported.
- Signaling connections are incorrectly tagged as VOIP sockets.
- Audio playout and recording does not work correctly on iOS simulators.
- If your non-CallKit enabled application joins a Room where no audio is being sent or received then signaling and media connections will fail upon turning off the display and entering a deep background state. In some cases this can result in a crash.
- The SDK is not extension safe, and
TVIVideoViewRenderer
instances will remain paused in this environment.
Features
- Added a new video frame class
TVIVideoFrame
, which replaces theTVII420Frame
class for rendering and theTVIVideoFrame
struct for capturing.TVIVideoFrame
can be created using aCVImageBufferRef
.TVIVideoRenderer
andTVIVideoCaptureConsumer
have been updated to use this class. - Renderers can now specify additional supported pixel formats via the
optionalPixelFormats
property inTVIVideoRenderer
. Support for rotation tags is now mandatory for all renderers.
Bug fixes
- Fixed an issue where SDK was incorrectly choosing
TVIAudioOutputVoiceChatDefault
by default, causing audio to be routed to the receiver on iPhones. - The SDK will no longer export any symbols from the dependencies that it consumes. For example, Twilio's Video and Chat SDKs can now be used at the same time to build an application.
- Added error handling for
nil
checks and protocol conformance. - Fixed a performance regression when communicating with clients that do not support rotation tags (like Firefox).
Known issues
- Network handoff, and subsequent connection renegotiation is not supported.
- VP8 is the only supported codec.
- Bitcode is not supported.
- Signaling connections are incorrectly tagged as VOIP sockets.
- If your non-CallKit enabled application joins a Room where no audio is being sent or received then signaling and media connections will fail upon turning off the display and entering a deep background state. In some cases this can result in a crash.
- The SDK is not extension safe. In particular, the changes made to
TVIVideoViewRenderer
to support CallKit / backgrounding use cases cause rendering timers to be paused when used in an extension.
Features
- STUN and TURN requests will now succeed on DNS64 / NAT64 networks. This allows for improved media connectivity in mapped IPv6 environments.
TVIVideoViewRenderer
now supports two new content modes:UIViewContentModeScaleAspectFill
andUIViewContentModeScaleToFill
.- This release is based upon Chromium WebRTC 55. As a part of this update
TVIVideoFrame
timestamps are now expressed in units of microseconds instead of nanoseconds. TVII420Frame
now provides display timestamps.
Bug fixes
- Using
TVICameraCapturer
on the iOS 10.0 betas no longer causes a crash. - Reverted a change where the Client would aggressively leave Rooms in response to PeerConnection Ice failures.
- Fixed a thread safety issue where adding/removing a track from
TVILocalMedia
could cause a crash. - Improved error handling for some signaling and media use cases, and defined additional error codes in
TVIError.h
.
Known issues
- The SDK incorrectly chooses
TVIAudioOutputVoiceChatDefault
by default, causing audio to be routed to the receiver on iPhones. You can work around this issue by settingTVIAudioController.audioOutput
toTVIAudioOutputVideoChatDefault
. See video-quickstart-ios for an example of how to do this. - Network handoff, and subsequent connection renegotiation is not supported.
- VP8 is the only supported codec.
- Bitcode is not supported.
- Signaling connections are incorrectly tagged as VOIP sockets.
- If your non-CallKit enabled application joins a Room where no audio is being sent or received then signaling and media connections will fail upon turning off the display and entering a deep background state. In some cases this can result in a crash.
- The SDK is not extension safe. In particular, the changes made to
TVIVideoViewRenderer
to support CallKit / backgrounding use cases cause rendering timers to be paused when used in an extension. - There is a performance regression (since
beta3
) when communicating with Firefox clients. The client performs an additional memory allocation and copy operation when aTVIVideoCapturer
delivers frames with non-zero rotation.
Bug fixes
TVICameraCapturer
no longer crashes when created on iOS 10.0 & 10.1 simulators. Instead, initializing the capturer returnsnil
when an unavailable source is provided. We've also improved runtime error handling for this class.- Fixed an issue which could cause connection renegotiation to fail when adding or removing tracks.
- Fixed an issue where the Room's Participants list could include the local Participant in multiparty.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported.
- VP8 is the only supported codec.
- Bitcode is not supported.
- Using TVICameraCapturer on iOS 10.0 betas causes a crash.
- Signaling connections are incorrectly tagged as VOIP sockets.
- STUN and TURN requests fail on DNS64 / NAT64 networks. Only host candidates are supported in this environment.
- TVIVideoViewRenderer only supports
UIViewContentModeScaleAspectFit
. - If your application requires the background audio capability (but not voip) and joins a Room where no audio is being sent or received then signaling and media connections will fail upon entering the background. In some cases this can result in a crash.
- The SDK is not extension safe. In particular, the changes made to
TVIVideoViewRenderer
to support CallKit / backgrounding use cases in beta2 cause rendering timers to be paused when used in an extension.
New features
- Added support for CallKit via a new class TVIAudioController. CallKit requires iOS 10.0 or greater. The Video QuickStart Sample App for CallKit demonstrates how to use the new APIs.
- Added the ability to select audio routes using
TVIAudioController
. - The Signaling stack supports DNS64 / NAT64 environments.
- Developers can add their own custom capturers by implementing
TVIVideoCapturer
. The existing camera and screen capturers now adopt this public API.
Bug fixes
- Fixed an inconsistency with the
TVIRoomDelegate
methodroom\:didFailToConnectWithError
where an error was not returned even though the argument was marked asnonnull
. - Calling disconnect before connecting to a Room results in
room\:didDisconnectWithError:
rather thanroom\:didFailToConnectWithError:
. TVIVideoViewRenderer
will no longer attempt to use GPU resources if initialized in the background. The Metal implementation only renders when the application is in the active state in order to better support CallKit use cases.- Using a malformed AccessToken causes an error to be raised.
- Logging at
TVILogLevelDebug
or greater shows the signaling messages exchanged. - Removed the usage of Poco thread pools for timers. Typically this means that the SDK requires two fewer threads to operate.
- The SDK includes an acknowledgements file which lists open source dependencies.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported.
- VP8 is the only supported codec.
- Bitcode is not supported.
- Using TVICameraCapturer on iOS 10.0 betas causes a crash.
- Signaling connections are incorrectly tagged as VOIP sockets.
- STUN and TURN requests fail on DNS64 / NAT64 networks. Only host candidates are supported in this environment.
- TVIVideoViewRenderer only supports
UIViewContentModeScaleAspectFit
. - If your application requires the background audio capability (but not voip) and joins a Room where there is no audio being sent or received then signaling and media connections will fail upon entering the background. In some cases this can result in a crash.
- The SDK is not extension safe. In particular, the changes made to
TVIVideoViewRenderer
to support CallKit / backgrounding use cases in beta2 cause rendering timers to be paused when used in an extension.
New features
- Added support for the iPhone 7 Plus to
TVICameraCapturer
. The SDK is compiled against the iOS 10 SDK, and continues to target iOS 8.1+. - Added a script to strip simulator architectures for use when submitting to the App Store.
Bug fixes
- If you don't detach or remove your renderer from a
TVIVideoTrack
it will automatically be cleaned up when the track is destroyed. - It is now possible to re-negotiate more than one track at a time.
- Improved signaling reliability.
- Fixed several crashes related to object teardown.
- Fixed an issue where passing an invalid
TVIIceServer
could result in a crash.
Known issues
- IPv6 is not fully supported on iOS 10.
- Network handoff, and subsequent connection renegotiation is not supported.
- VP8 is the only supported codec.
- CallKit is not officially supported. We plan on adding this in a future beta releases.
- Bitcode is not supported.
- Using TVICameraCapturer on iOS 10.0 betas causes a crash.
- Signaling connections are incorrectly tagged as VOIP sockets.
New features
- TwilioVideo uses a Room based communications model. We have replaced
TWCConversation
withTVIRoom
and eliminated Invites from the SDK. Instead of callinginviteToConversation
onTwilioConversationsClient
you should callconnectWithDelegate
orconnectWithOptions:delegate
onTVIVideoClient
. - A Room is a named voice and/or video session between one or more Participants. Unlike a Conversation a Room is created as soon as a single Participant joins. Rooms do not use invitations; Participants may join a room by simply calling
connect
and passing the Room's name as an argument. - It is possible to join more than one Room at a time.
- Manipulating
TVILocalMedia
is synchronous, and no longer requires a delegate. - It is possible to use
TVILocalMedia
independently from joining a Room. The same instance ofTVILocalMedia
can be reused in multiple Rooms. - We have added
TVIScreenCapturer
, a new capturer which shares the contents of aUIView
with other Participants. - Local audio is now a first class citizen in the SDK via
TVILocalAudioTrack
. You can useTVIAudioConstraints
in order to customize the audio that you share. - TwilioCommon is no longer used with the SDK.
- TwilioVideo is distributed as a dynamic framework.
- We use a new signaling protocol which offers support for trickle-ice. This should result in improved call setup times compared to Conversations.
Bug fixes
- First developer preview release.
Known issues
- IPv6 is not fully supported on iOS 10.
- Network handoff, and subsequent connection renegotiation is not supported.
- If you use the attach APIs to render a video feed, then you must call detach explicitly. Similarly if you add a renderer to a video track then you will have to remove it yourself.
- Renegotiating more than one track at a time is not supported.
- VP8 is the only supported codec.
- Bitcode is not supported.