The Change Logs below include links to specific patch-level artifacts. We don't recommend using these links unless you have a known need for a specific patch level.
AVAudioSessionInterruptionOptionShouldResumeflag and automatically resume Call audio when the interruption ends, as suggested in Apple's Responding to Interruptions guide.
TwilioVoice.hnow is the umbrella header and includes all the SDK headers for you.
TwilioVoice.audioEnabledis set to
TwilioVoice.stopAudio()have been removed in favor of a new property called
TwilioVoice.audioEnabled. This property provides developers with a mechanism to enable or disable the activation of the audio device prior to starting a call or to stop or start the audio device while a call is already in progress. A
Callcan now be connected without activating the audio device by setting
NOand can be enabled during the lifecycle of the
YES. The default value is
YES. This API change was made to ensure full compatibility with CallKit as well as supporting other use cases where developers may need to disabled the audio device during a
Call. These changes also improve the underlying implementation of
TVOCallobject ensuring that calling
holddoes not disable the audio device while still ceasing the flow of audio between call parties.
TVOCall.delegateis now marked as readonly.
TwilioVoice.configureAVAudioSession()applies the following settings to the
AVAudioSession. Calling this ensures that the
AVAudioSessionwill not be modified while connecting to a Call, rather the configuration is configured up front when calling the
TwilioVoice.configureAVAudioSession()method. This ensures that the
Callis compliant with the
NSError *error = nil; [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord mode:AVAudioSessionModeVoiceChat options:AVAudioSessionCategoryOptionAllowBluetooth | AVAudioSessionCategoryOptionAllowBluetoothA2DP error:&error];
holdis added to
TVOCall. Use this method for audio session interruption or CallKit integration. Check out the quickstart for more examples.
TVOCall.uuidis now readonly and nonnull.
TVOCallinherits UUIDs when created from
TwilioVoice.call()which accepts an
TVOCallInviteis accepted or rejected instead of when the
TVOCallInviteis raised via
TVOCallgets stuck when a network handover occurs and its state is still
call:didDisconnectWithError:are introduced to the
TVOCallDelegateprotocol to replace the original
call:didFailWithError:methods. Please see
TVOCallDelegate.hfor more details.
sharedInstancemethod is removed from
publishMetricsEnabledproperty is removed from
TwilioVoice. Call quality data collection is enabled by default.
inject_credentials.shwhich was accidentally included in the
TwilioVoice.frameworkbundle has been removed.
callInviteCanceled:method has been removed and now both Call-invite and Call-canceled events will be received via the
[TwilioVoice call:params:delegate]without valid
delegatearguments results in an
NSInvalidArgumentExceptionbeing raised. The
delegateproperty is now marked explicitly as
TwilioVoiceto select the best location for your mobile client. The details of this feature are covered in [Regions].
Invalid Grants (20106)error code will be returned if the access token does not contain
voicegrant when calling
call:didFailWithError:callback is received with a generic error instead of
callDidDisconnect:when trying to hang up a Call that is still in
TVOCallstill gets connected when calling
[TVOCall disconnect]while the Call is in the
inject_credentials.shwas accidentally included in the framework bundle and will cause a code signing issue when uploading the application to iTunes Connect. We are working on the fix and will release another beta soon. (voice-quickstart-swift #72)
stopAudio. Use these CallKit integration methods in the
audioSessionDeactivatedmethod for CallKit integration has been removed and the functionality is consolidated into the
delegateparameter of the
[TwilioVoice handleNotification:delegate:]method is now non-null. An exception will be thrown if called with an invalid
TVOCallare explicitly marked as unavailable and now throw exceptions when called.
[TwilioVoice handleNotification:delegate:]is called with non-NSDictionary or empty
TVOCallInviteis rejected with an active
TVOCall, disconnect events from the remote party are not received on the Call.
TVOCall.disconnect()to hang up the call.
audioSessionDeactivatedis added to the
TwilioVoice. Use this method on receiving the
provider:didDeactivateAudioSession:callback from CallKit before making or accepting subsequent calls to ensure call audio works.
TVOCall.disconnect()on receiving the
TwilioVoiceClient.his no longer required and is removed from the framework headers.
uuidis added to the
TVOCall.disconnectis called. This is for faster teardown of audio after a call.
VoiceClientclass is now called
TwilioVoice.framework. Please update your
Podfileand codes to import the SDK properly.
TVOCallInviteobject and the
TVOCallobject could cause failure when disconnecting CallKit incoming calls.
TVOIncomingCallinto a single class -
TVOCall, and its delegate
TVOCallInviteclass for applications to answer or reject incoming calls.
configureAudioSession- use this method to set up the
AVAudioSessionwith desired configuration before letting the CallKit framework activate the audio session
startAudioDevice- use this method to signal the SDK to start audio I/O units when receiving the audio activation callback of CallKit's
stopAudioDevice- use this method to signal the SDK to stop audio I/O units when receiving deactivation or reset callbacks of CallKit's
uuidproperties of the
TVOOutgoingCallto reference your calls within CallKit.
VoiceClientis now an instance method to avoid a clash with the
TVOOutgoingCall. Only the connecting, connected, and disconnected states remain.
IsConnectingcallback of the
TVOOutgoingCallDelegate. The creation of
TVOOutgoingCalland the existence of
TVOIncomingCallimply that the calls are connecting.
logLevelmethod did not return the correct value after the log level was set.
TwilioVoiceClient.Frameworkin your project manually, you'll need to remove the simulator binaries from the embedded framework before publishing to the App Store. Navigate to your target's Build Phases screen and create a new "Run Script Phase". Paste the following command in the script text field:
accountSidproperty from the
TVOIncomingCallStateCancelledstate to the
registerWithAccessToken:deviceToken:completionto avoid conflict with C language reserved keyword
unregisterWithAccessToken:deviceToken:completionto avoid conflict with C language reserved keyword