Changelog

Deprecation Notice - Versions 2.0.0-beta9 to 2.0.0-beta12
Please note that versions 2.0.0-beta9 to 2.0.0-beta12 of the Programmable Voice iOS library are deprecated and will stop working on September 13, 2018. Please make sure you’re using the latest version of the library in your apps, and make sure your customers update their apps by that date. For more information please review the following knowledge base article.

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.


2.0.4 (March 26, 2018)

Bug Fixes

  • [CLIENT-4426] The SDK will ignore the AVAudioSessionInterruptionOptionShouldResume flag and automatically resume Call audio when the interruption ends, as suggested in Apple's Responding to Interruptions guide.

2.0.3 (March 13, 2018)

Bug Fixes


2.0.2 (February 27, 2018)

Enhancements

  • API Changes:
    • TwilioVoice.h now is the umbrella header and includes all the SDK headers for you.

2.0.1 (January 12, 2018)

Bug Fixes

  • [CLIENT-4268] Removed debug assertions in release build. #94
  • [CLIENT-4285] Retry enabling the audio device up to 5 times when TwilioVoice.audioEnabled is set to YES.

2.0.0 (December 15, 2017)


2.0.0-beta22 (December 13, 2017)

Enhancements

  • API Changes:
    • TwilioVoice.startAudio() and 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 Call can now be connected without activating the audio device by setting TwilioVoice.audioEnabled to NO and can be enabled during the lifecycle of the Call by setting TwilioVoice.audioEnabled to 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 hold in the TVOCall object ensuring that calling hold does not disable the audio device while still ceasing the flow of audio between call parties.
    • TVOCall.delegate is now marked as readonly.
    • TwilioVoice.configureAVAudioSession() applies the following settings to the AVAudioSession. Calling this ensures that the AVAudioSession will 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 Call is compliant with the CallKit APIs.
    NSError *error = nil;
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord
                                            mode:AVAudioSessionModeVoiceChat
                                         options:AVAudioSessionCategoryOptionAllowBluetooth | AVAudioSessionCategoryOptionAllowBluetoothA2DP
                                           error:&error];

2.0.0-beta21 (November 29, 2017)

Enhancements

  • API Changes:
    • A new method hold is added to TVOCall. Use this method for audio session interruption or CallKit integration. Check out the quickstart for more examples.
    • TVOCall.uuid is now readonly and nonnull.
    • TVOCall inherits UUIDs when created from TVOCallInvite.acceptWithDelegate:.
    • Added a variant of TwilioVoice.call() which accepts an NSUUID argument.
    • The SDK now defers creation of signaling and media resources until a TVOCallInvite is accepted or rejected instead of when the TVOCallInvite is raised via TVONotificationDelegate.
    • The returned TVOCall objects of TwilioVoice.call() and TVOCallInvite.acceptWithDelegate() are now nonnull.

2.0.0-beta20 (November 9, 2017)

Bug Fixes

  • [CLIENT-3765] Fixed a bug where TVOCall gets stuck when a network handover occurs and its state is still TVOCallStateConnecting.
  • [CLIENT-4101] Fixed a potential crash when the Call is disconnected, especially when trying to make a call when the network connection is lost.
  • [CLIENT-4150] Nullability notations updated in TVOCall - to, from and uuid are now nullable. #79

2.0.0-beta19 (October 24, 2017)

Enhancements

  • API Changes:
    • call:didFailToConnectWithError: and call:didDisconnectWithError: are introduced to the TVOCallDelegate protocol to replace the original callDidDisconnect: and call:didFailWithError: methods. Please see TVOCallDelegate.h for more details.
    • The sharedInstance method is removed from TwilioVoice.
    • The publishMetricsEnabled property is removed from TwilioVoice. Call quality data collection is enabled by default.

Bug Fixes

  • [CLIENT-3966] Fixed a bug where the log level of the PJSIP module might not be updated after calling [TwilioVoice setModule:logLevel:].
  • [CLIENT-4102] Fixed a crash when calling [TwilioVoice startAudio] or [TwilioVoice stopAudio].

2.0.0-beta18 (October 11, 2017)

Bug Fixes

  • [CLIENT-4092] The inject_credentials.sh which was accidentally included in the TwilioVoice.framework bundle has been removed.

2.0.0-beta17 (October 9, 2017)

Enhancements

  • API Changes:
    • The callInviteCanceled: method has been removed and now both Call-invite and Call-canceled events will be received via the callInviteReceived: callback.
    • Calling [TwilioVoice call:params:delegate] without valid accessToken, params, or delegate arguments results in an NSInvalidArgumentException being raised. The delegate property is now marked explicitly as nonnull.
    • The Voice SDK now lets you select the specific Twilio data center used when your Call connects to Twilio. Use the region property of TwilioVoice to select the best location for your mobile client. The details of this feature are covered in [Regions].
    • Possible error codes and descriptions are now available in the TVOError.h header.

Bug Fixes

  • [CLIENT-4064] Invalid Grants (20106) error code will be returned if the access token does not contain voice grant when calling [TwilioVoice registerWithAccessToken:deviceToken:completion:] or [TwilioVoice call:params:delegate:].
  • [CLIENT-3967] Fixed a bug where call:didFailWithError: callback is received with a generic error instead of callDidDisconnect: when trying to hang up a Call that is still in TVOCallStateConnecting state.
  • [CLIENT-3820] Fixed a bug where TVOCall still gets connected when calling [TVOCall disconnect] while the Call is in the TVOCallStateConnecting state.

Known Issues

  • A development script inject_credentials.sh was 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)

2.0.0-beta16 (September 21, 2017)

Enhancements

  • API Changes:
    • startAudioDevice and stopAudioDevice are now startAudio and stopAudio. Use these CallKit integration methods in the provider:didActivateAudioSession: or provider:didDeactivateAudioSession: callbacks.
    • The audioSessionDeactivated method for CallKit integration has been removed and the functionality is consolidated into the stopAudio method.
    • The delegate parameter of the [TwilioVoice handleNotification:delegate:] method is now non-null. An exception will be thrown if called with an invalid delegate.
  • The SDK is now packaged as a static library with headers, in addition to a dynamic framework.

Bug Fixes

  • [CLIENT-4045] Fixed a crash when the SDK tries to perform JSON-serialization on call quality data.
  • [CLIENT-3728] The init methods of TwilioVoice, TVOCallInvite and TVOCall are explicitly marked as unavailable and now throw exceptions when called.
  • [CLIENT-3726] Fixed a crash when [TwilioVoice handleNotification:delegate:] is called with non-NSDictionary or empty payload argument.

2.0.0-beta15 (August 31, 2017)

  • Programmable Voice iOS SDK 2.0.0-beta15 [tar], [docs]

Bug Fixes

  • [CLIENT-3695] Resolved internal retain cycles in classes which produce call quality metrics.
  • [CLIENT-3885] Internal resources of the SIP Client were not freed when the number of active Calls and Invites reached zero.
  • [CLIENT-3970] If a TVOCallInvite is rejected with an active TVOCall, disconnect events from the remote party are not received on the Call.
  • [CLIENT-3941] If the first outgoing Call fails due to no network connectivity then subsequent Calls fail as well.

2.0.0-beta14 (August 15, 2017)

  • Programmable Voice iOS SDK 2.0.0-beta14 [tar], [docs]

Enhancements

  • [CLIENT-3850] The SDK is now able to have multiple calls simultaneously.

Bug Fixes

  • [CLIENT-3853] Improved error handling for registration operations.
  • [CLIENT-3884] Registration callbacks are now raised on the main thread.
  • [CLIENT-3954] Fixed a crash when calling TVOCall.disconnect() to hang up the call.

2.0.0-beta13 (July 20, 2017)

  • Programmable Voice iOS SDK 2.0.0-beta13 [tar], [docs]

Enhancements

  • [CLIENT-3838] Reduced the size of the SDK by removing a dependency which was used for registration.

Bug Fixes

  • [CLIENT-3674, 3772] Resolved memory corruption crashes which could occur after registering.
  • [CLIENT-3713] Static boost threads are no longer created when loading the SDK. The Poco threadpool which was created after registering no longer exists.
  • [CLIENT-3706] Resolved memory leaks in BoringSSL which occured while registering.
  • [CLIENT-3814] Close the signaling connection when the active Call is disconnected.

2.0.0-beta12 (July 11, 2017)

  • Programmable Voice iOS SDK 2.0.0-beta12 [tar], [docs]

Enhancements

  • API Changes:
    • TVOCallInviteStateCancelled is now TVOCallInviteStateCanceled.
    • TVONotificationDelegate method callInviteCancelled: is now callInviteCanceled:.
    • TVOCall.callSid is now TVOCall.sid.

Bug Fixes

  • [CLIENT-3786] Fixed a bug where subsequent calls might lose audio.
  • [CLIENT-3684] Fixed a crash when trying to reject a call invite without network.
  • [CLIENT-3554] Fixed a bug where making a call right after calling TVOCall.disconnect() would fail.

2.0.0-beta11 (June 21, 2017)

  • Programmable Voice iOS SDK 2.0.0-beta11 [tar], [docs]

Enhancements

  • API Changes:
    • A new method audioSessionDeactivated is added to the CallKitIntegration category of TwilioVoice. Use this method on receiving the provider:didDeactivateAudioSession: callback from CallKit before making or accepting subsequent calls to ensure call audio works.

Bug Fixes

  • [CLIENT-3686] Fixed a bug where subsequent calls lose audio if the application calls TVOCall.disconnect() on receiving the AVAudioSessionInterruptionNotification notification.
  • [CLIENT-3717] Fixed a bug where DTMF digits are not sent properly.

2.0.0-beta10 (June 5, 2017)

  • Programmable Voice iOS SDK 2.0.0-beta10 [tar], [docs]

Bug Fixes

  • [CLIENT-3647] Fixed a crash when the SDK is trying to parse the SIP error code and description.
  • [CLIENT-3679] Fixed a memory leak by improving the use of NSURLSession.
  • [CLIENT-3672] TwilioVoiceClient.h is no longer required and is removed from the framework headers.
  • [CLIENT-3626] uuid is added to the debugDescription method of TVOCallInvite and TVOCall.

2.0.0-beta9 (May 11, 2017)

Bug Fixes

  • [CLIENT-3611] Added DTMF tone local playback when TVOCall.sendDigits is called.
  • [CLIENT-3617] We now destroy the media session right after TVOCall.disconnect is called. This is for faster teardown of audio after a call.
  • [CLIENT-3634] Added more granular error codes and descriptions for call failures resulting from invalid access tokens.

2.0.0-beta8 (April 12, 2017)

Enhancements

  • API Changes:
    • The VoiceClient class is now called TwilioVoice.
    • The framework name is now TwilioVoice.framework. Please update your Podfile and codes to import the SDK properly.

Bug Fixes

  • [CLIENT-3528] Fixed a bug where audio does not work for CallKit.

2.0.0-beta7 (March 17, 2017)

Bug Fixes

  • [CLIENT-3441] Fixed a bug where audio does not resume after network handover.
  • [CLIENT-3495] Fixed a bug where inconsistent UUIDs of the TVOCallInvite object and the TVOCall object could cause failure when disconnecting CallKit incoming calls.
  • [CLIENT-3513] Fixed a bug where the SDK does not get disconnected after rejecting a call-invite from a third party during an active call.

2.0.0-beta6 (February 16, 2017)

Enhancements

  • Introduced a new object model:
  • Consolidated TVOutgoingCall and TVOIncomingCall into a single class - TVOCall, and its delegate TVOCallDelegate.
  • Introduced the TVOCallInvite class for applications to answer or reject incoming calls.
  • Enabled Secure Real Time Protocol (SRTP). Both signaling and media channels are encrypted now.

Bug Fixes

  • [CLIENT-3435] Fixed a crash in TVORTCMonitor.insertSample().
  • [CLIENT-3134] Fixed a bug that prevented the SDK from working on WiFi networks when cellular data connection is turned off/disabled.
  • [CLIENT-3409] Added more informative error messages to be returned when VoIP Push registration fails.

Known Issues

  • Calls will lose audio when network handover happens.

2.0.0-beta5 (November 30, 2016)

Enhancements

  • Added a network reachability check and resulting adjustments every time the app comes into foreground.
  • Trying to place or receive a call when there is no network connectivity will now result in outgoingCall:didFailWithError: or incomingCall:didFailWithError: callbacks, respectively.
  • Trying to place or receive a call when there is already an established call present will now result in outgoingCall:didFailWithError: or incomingCall:didFailWithError: callbacks, respectively.
  • Bitcode is now supported for app submission.

Bug Fixes

  • [CLIENT-3125] Fixed an issue with CallKit support where only the first CallKit call had audio.
  • [CLIENT-3245] Fixed an issue where the local microphone was not enabled on iOS 9 devices.

Known Issues

  • iOS 10.2 beta2. When using CallKit, the SDK may fail to accept the second and subsequent incoming calls on iOS 10.2 beta2.
  • Network handover. If during an ongoing call the WiFi connection is switched from one network to another, and the LTE network is not available, the audio connection will be cut and will not re-establish.

2.0.0-beta4 (October 20, 2016)

Enhancements

  • Added support for CallKit:
    • Use the following methods to inform the SDK of CallKit events:
      • configureAudioSession - use this method to set up the AVAudioSession with 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 CXProviderDelegate
      • stopAudioDevice - use this method to signal the SDK to stop audio I/O units when receiving deactivation or reset callbacks of CallKit's CXProviderDelegate
    • Use the uuid properties of the TVOIncomingCall and TVOOutgoingCall to reference your calls within CallKit.
  • Added two new Quickstart apps - for Objective-C and Swift - to demonstrate the use of CallKit features.
  • Added sample code in the Quickstart apps for handling a new incoming call while an existing call is already in progress.
  • The version method of VoiceClient is now an instance method to avoid a clash with the version method of NSObject.
  • Changed the possible states of the TVOOutgoingCall. Only the connecting, connected, and disconnected states remain.
  • Removed IsConnecting callback of the TVOIncomingCallDelegate and the TVOOutgoingCallDelegate. The creation of TVOOutgoingCall and the existence of TVOIncomingCall imply that the calls are connecting.

Bug Fixes

  • [CLIENT-3069] Fixed an issue where the logLevel method did not return the correct value after the log level was set.
  • [CLIENT-3110] Fixed a crash when audio interruption (PSTN call, Siri) occurs during active calls.

Known Issues

  • Network handover. If during an ongoing call the WiFi connection is switched from one network to another, and the LTE network is not available, the audio connection will be cut and will not re-establish.

2.0.0-beta3 (October 11, 2016)

Enhancements

  • Updated the unused architectures removal script so as to avoid issues when publishing to the App Store. If you're including TwilioVoiceClient.Framework in 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:
/bin/bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/TwilioVoiceClient.framework/remove_archs"
  • Removed accountSid property from the TVOIncomingCall class
  • Added TVOIncomingCallStateCancelled state to the TVOIncomingCall class
  • Renamed register:deviceToken:completion to registerWithAccessToken:deviceToken:completion to avoid conflict with C language reserved keyword register
  • Renamed unregister:deviceToken:completion to unregisterWithAccessToken:deviceToken:completion to avoid conflict with C language reserved keyword register
  • Switched to BoringSSL library as our SSL implementation
  • Added additional logic for IPv6 support that attempts to connect to all resolved internet addresses and uses the first network interface that successfully connects

Bug Fixes

  • All delegate callbacks are now dispatched on the main queue
  • The SDK no longer starts the audio device when rejecting a call
  • Fixed a crash on regaining network access after having launched SDK without network access

Known Issues

  • Network handover. If during an ongoing call the WiFi connection is switched from one network to another, and the LTE network is not available, the audio connection will be cut and will not re-establish.

2.0.0-beta2 (September 27, 2016)

Bug Fixes

  • Supports IPv6-only networks on iOS 10

2.0.0-beta1 (September 16, 2016)

Enhancements

  • Supports iOS 10
  • Uses Apple VoIP Services push notifications for signaling incoming calls
  • Uses Twilio Access Tokens for authentication/authorization

Bug Fixes

  • n/a

Known Issues

  • n/a

Need some help?

We all do sometimes; code is hard. Get help now from our support team, or lean on the wisdom of the crowd browsing the Twilio tag on Stack Overflow.