メニュー

Rate this page:

Thanks for rating this page!

We are always striving to improve our documentation quality, and your feedback is valuable to us. How could this documentation serve you better?

3.x Changelog

3.0.0-beta8

March 20, 2019

バグ修正

  • CLIENT-5796 Fixed an issue where the millisecond timestamp in the Insights event payload overflows on 32-bit architecture devices.
  • CLIENT-5830 Removed scripts from TwilioVoice.framework that could cause code signing issue when uploading apps to iTunes Connect.

既知の問題

  • CLIENT-5576 LTE -> WiFi may cause one way audio.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via TVOConnectOptions or TVOAcceptOptions. ICE servers can be obtained from Twilio's Network Traversal Service.

Size Report

アーキテクチャ App Download Size App Storage Size
Universal 5.8 MB 12.4 MB
arm64 2.8 MB 6.8 MB
armv7 3.0 MB 5.6 MB

3.0.0-beta7

March 19, 2019

改善点

  • API の変更点
  • The from property of the TVOCallInvite and TVOCancelledCallInvite objects is now nullable in case the value is not available in the call invite notification.

バグ修正

  • CLIENT-5801 Fixed an issue where an incoming call invite that did not contain a from field was not considered a valid notification.

既知の問題

  • CLIENT-5830 Apps using 3.0.0-beta7 may have code signing issue when uploading to iTunes Connect due to some development scripts included in TwilioVoice.framework.
  • CLIENT-5576 LTE -> WiFi may cause one way audio.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via TVOConnectOptions or TVOAcceptOptions. ICE servers can be obtained from Twilio's Network Traversal Service.

Size Report

アーキテクチャ App Download Size App Storage Size
Universal 5.8 MB 12.4 MB
arm64 2.8 MB 6.8 MB
armv7 3.0 MB 5.6 MB

3.0.0-beta6

March 14, 2019

改善点

  • CLIENT-5258 Reduced SDK size by stripping video software codecs.
  • CLIENT-5353 Reduced SDK size by stripping SCTP data channels.

既知の問題

  • CLIENT-5830 Apps using 3.0.0-beta6 may have code signing issue when uploading to iTunes Connect due to some development scripts included in TwilioVoice.framework.
  • CLIENT-5576 LTE -> WiFi may cause one way audio.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via TVOConnectOptions or TVOAcceptOptions. ICE servers can be obtained from Twilio's Network Traversal Service.

Size Report

アーキテクチャ App Download Size App Storage Size
Universal 5.8 MB 12.4 MB
arm64 2.8 MB 6.8 MB
armv7 3.0 MB 5.6 MB

3.0.0-beta5

March 4, 2019

改善点

  • CLIENT-5678 The size impact report now includes both armv7 and arm64 architectures.
  • The libboringssl.a library is now separated and shipped alongside the static library libTwilioVoice.a. Add -lboringssl in the Other Linker Flags to link the SDK properly.

バグ修正

  • CLIENT-5664 The static library libTwilioVoice.a is now properly linked with dependencies.

既知の問題

  • CLIENT-5830 Apps using 3.0.0-beta5 may have code signing issue when uploading to iTunes Connect due to some development scripts included in TwilioVoice.framework.
  • CLIENT-5576 LTE -> WiFi may cause one way audio.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via TVOConnectOptions or TVOAcceptOptions. ICE servers can be obtained from Twilio's Network Traversal Service.
  • CLIENT-4805 The SDK size is significantly larger than 2.x. A reduced size will be introduced during the beta period.

Size Report

アーキテクチャ App Download Size App Storage Size
Universal 6.4 MB 13.4 MB
arm64 3.1 MB 7.4 MB
armv7 3.3 MB 6.1 MB

3.0.0-beta4

February 14, 2019

改善点

  • API の変更点
  • TVOCallFeedbackScoreNoScore is replaced with TVOCallFeedbackScoreNotReported.

既知の問題

  • CLIENT-5576 LTE -> WiFi may cause one way audio.
  • CLIENT-5578 WiFi to WiFi handover may disconnect the Call.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via TVOConnectOptions or TVOAcceptOptions. ICE servers can be obtained from Twilio's Network Traversal Service.
  • CLIENT-4805 The SDK size is significantly larger than 2.x. A reduced size will be introduced during the beta period.

Size Report

アーキテクチャ App Download Size App Storage Size
Universal 6.4 MB 13.4 MB
arm64 3.1 MB 7.3 MB
armv7 3.3 MB 6.0 MB

3.0.0-beta3

February 7, 2019

改善点

  • The Voice SDK publishes Call Insights. Publishing is enabled by default. The preference can be updated by configuring TVOCallOptions.enableInsights.
  • CLIENT-5595 Added TVOErrorTokenAuthenticationRejected (51007). This error is raised when attempting to perform registration or unregistration with a token that is invalid.
  • Added [TVOCall postFeedback:issue:] method to TVOCall that posts the feedback collected for this Call to Twilio. If TVOCallFeedbackScoreNoScore and TVOCallFeedbackIssueNotReported are passed, Twilio will report feedback was not available for this call.
  • CLIENT-2985 The SDK can connect to Twilio’s Servers in an IPv6 environment.
  • CLIENT-4998 Call will continue after network handoff.

バグ修正

  • CLIENT-5573 Fixed a crash that occurred when a client issued a disconnect while already processing a termination request from the server.

既知の問題

  • CLIENT-5576 LTE -> WiFi may cause one way audio.
  • CLIENT-5578 WiFi to WiFi handover may disconnect the Call.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via TVOConnectOptions or TVOAcceptOptions. ICE servers can be obtained from Twilio's Network Traversal Service.
  • CLIENT-4805 The SDK size is significantly larger than 2.x. A reduced size will be introduced during the beta period.

Size Report

アーキテクチャ App Download Size App Storage Size
Universal 3.1 MB 7.3 MB
arm64 3.1 MB 7.3 MB

3.0.0-beta2

December 13, 2018

改善点

  • Added a preferredAudioCodecs property to TVOCallOptions. Support for Opus is added to the Voice SDK but yet to be enabled on Twilio infrastructure. It will be notified to the users of the Voice SDK when Opus codec is enabled on Twilio infrastructure.
  • Added new error code 31008. This error is raised when a TVOCallInvite is accepted after the Call has ended.

バグ修正

  • CLIENT-5398 Unmuting a Call on hold causes audio to flow.

既知の問題

  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via TVOConnectOptions or TVOAcceptOptions. ICE servers can be obtained from Twilio's Network Traversal Service.
  • CLIENT-4805 The SDK size is significantly larger than 2.x. A reduced size will be introduced during the beta period.
  • CLIENT-4998 Network handoff, and subsequent connection renegotiation is not supported.
  • CLIENT-2985 IPv6はサポートされません。
  • CLIENT-4547 Insights is not published.
  • CLIENT-4537 PCMU is the only supported codec. We plan on adding support for Opus moving forward. #117

Size Report

アーキテクチャ App Download Size App Storage Size
Universal 3.1 MB 7.2 MB
arm64 3.1 MB 7.2 MB

3.0.0-beta1

November 26, 2018

改善点

  • Added media and signaling related error codes.

既知の問題

  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via TVOConnectOptions or TVOAcceptOptions. ICE servers can be obtained from Twilio's Network Traversal Service.
  • CLIENT-5258 The SDK size is significantly larger than 2.x. A reduced size will be introduced during the beta period.
  • CLIENT-4998 Network handoff, and subsequent connection renegotiation is not supported.
  • CLIENT-2985 IPv6はサポートされません。
  • CLIENT-4547 Insights is not published.
  • CLIENT-4537 PCMU is the only supported codec. We plan on adding support for Opus moving forward. #117
  • CLIENT-5398 Unmuting a call on hold causes audio to flow.

3.0.0-preview5

October 24, 2018

バグ修正

  • CLIENT-5186 Fixed a crash when network is lost during an active Call.
  • CLIENT-5132 The call:didDisconnectWithError: delegate method of the caller should be called with nil error instead of call:didFailToConnectWithError: when the TVOCallInvite is rejected with answerOnBridge enabled.
  • CLIENT-4837 Fixed a crash caused by SIGPIPE when a signaling socket is closed due to an error.

既知の問題

  • CLIENT-5059 Calls made to a client or PSTN number that have a long duration before answering may not get connected.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via TVOConnectOptions or TVOAcceptOptions. ICE servers can be obtained from Twilio's Network Traversal Service.
  • CLIENT-5258 The SDK size is significantly larger than 2.x. A reduced size will be introduced during the beta period.
  • CLIENT-4998 Network handoff, and subsequent connection renegotiation is not supported.
  • CLIENT-2985 IPv6はサポートされません。
  • CLIENT-4547 Insights is not published.
  • CLIENT-4672 CLIENT-4673 Error codes 20157 and 20151 report different message and explanation text than Voice 2.0 SDKs.
  • CLIENT-4537 PCMU is the only supported codec. We plan on adding support for Opus moving forward. #117

3.0.0-preview4

October 2, 2018

改善点

  • TVOCallInvitecustomParameters プロパティが追加されました。

Pass custom parameters in TwiML

  <?xml version="1.0" encoding="UTF-8"?>
  <Response>
    <Dial callerId="client:alice">
      <Client>
        <Identity>bob</Identity>
        <Parameter name="caller_first_name" value="alice" />
        <Parameter name="caller_last_name" value="smith" />
      </Client>
    </Dial>
  </Response>

callInvite.customParameters:

  {
    "caller_first_name" = "alice";
    "caller_last_name" = "smith";
  }

バグ修正

  • CLIENT-5202 Fixed a potential crash caused by a memory corruption when a custom TVOAudioDevice is created.
  • CLIENT-5160 The Voice SDK is built using the audio variant of WebRTC 67. Developers are no longer are required to add NSCameraUsageDescription key in app's Info.plist to consume the Voice SDK in an app and upload it to the App Store. #164
  • CLIENT-5204 Call audio was not able to recover from AVAudioSession interruptions. TVOAVAudioSessionConfigurationBlock now configures AVAudioSession.preferredIOBufferDuration to 20 milliseconds by default, to match changes in WebRTC.

既知の問題

  • CLIENT-5059 Calls made to a PSTN number may not get connected when answerOnBridge is set to true.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via TVOConnectOptions or TVOAcceptOptions. ICE servers can be obtained from Twilio's Network Traversal Service.
  • CLIENT-5258 The SDK size is significantly larger than 2.x. A reduced size will be introduced during the beta period.
  • CLIENT-4998 Network handoff, and subsequent connection renegotiation is not supported.
  • CLIENT-2985 IPv6はサポートされません。
  • CLIENT-4547 Insights is not published.
  • CLIENT-4672 CLIENT-4673 Error codes 20157 and 20151 report different message and explanation text than Voice 2.0 SDKs.
  • CLIENT-4537 PCMU is the only supported codec. We plan on adding support for Opus moving forward. #117

3.0.0-preview3

September 12, 2018

バグ修正

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

改善点

  • This release is based on Chromium WebRTC 67.
  • Provide a stateless mechanism for processing push notifications related to call invites and call invite cancellations. The [TwilioVoice handleNotification:] no longer raises errors via the notificationError: method when processing invalid notifications, instead a BOOL value is returned when it is called. The boolean value is YES when the provided notification payload results in a TVOCallInvite or TVOCancelledCallInvite object. If [TwilioVoice handleNotification:] returns NO it means the data provided was not a Twilio Voice push notification. The TVOCallInvite has an accept() and a reject() method. While the TVOCancelledCallInvite simply provides the to, from, and callSid fields also available in the TVOCallInvite object. The callSid can be used to associate a TVOCallInvite with a TVOCancelledCallInvite.
  • notificationError: is removed from the TVONotificationDelegate protocol. cancelledCallInviteReceived: is added for the SDK to notify the application when a Call cancellation notification is received.

Processing push notifications in 2.X

- (void)pushRegistry:(PKPushRegistry *)registry
        didReceiveIncomingPushWithPayload:(PKPushPayload *)payload
             forType:(NSString *)type {
    [TwilioVoice handleNotification:payload.dictionaryPayload delegate:self];
}

#pragma mark - TVONotificationDelegate

- (void)callInviteReceived:(TVOCallInvite *)callInvite {
    if (callInvite.state == TVOCallInviteStatePending) {
        [self handleCallInviteReceived:callInvite];
    } else if (callInvite.state == TVOCallInviteStateCanceled) {
        [self handleCallInviteCanceled:callInvite];
    }
}

- (void)notificationError:(NSError *)error {
    NSLog(@"Failed processing notification payload: %@", error);
}

- (void)handleCallInviteReceived:(TVOCallInvite *)callInvite {
    // Call invite received
}

- (void)handleCallInviteCanceled:(TVOCallInvite *)callInvite {
    // Call invite canceled
}

Processing push notifications in 3.X

- (void)pushRegistry:(PKPushRegistry *)registry
        didReceiveIncomingPushWithPayload:(PKPushPayload *)payload
             forType:(NSString *)type {
    BOOL result = [TwilioVoice handleNotification:payload.dictionaryPayload delegate:self];
    if (!result) {
        NSLog(@"The processed data was not a Twilio push notification payload");
    }
}

#pragma mark - TVONotificationDelegate

- (void)callInviteReceived:(TVOCallInvite *)callInvite {
    // Call invite received
}

- (void)cancelledCallInviteReceived:(TVOCancelledCallInvite *)cancelledCallInvite {
    // Call invite cancelled
}

API の変更点

  • Deprecated the TVOAudioOptions.levelControl and TVOAudioOptions.levelControlInitialPeakLevelDBFS properties as they are no longer supported in Chromium WebRTC 67.

既知の問題

  • CLIENT-5121 The apps using 3.0.0-preview3 may need to include NSCameraUsageDescription key and purpose string in it's Info.plist in order to submit the app to the App Store. The WebRTC used by the Twilio Voice SDK is using camera APIs. We are working on building the Voice SDK with the audio only variant of WebRTC where this workaround will not be required. #163
  • CLIENT-5059 Calls made to a client or PSTN number that have a long duration before answering may not get connected.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via TVOConnectOptions or TVOAcceptOptions. ICE servers can be obtained from Twilio Network Travarsal Service.
  • CLIENT-4805 The SDK size is significantly larger than 2.x. A reduced size will be introduced during the beta period.
  • CLIENT-4998 Network handoff, and subsequent connection renegotiation is not supported.
  • CLIENT-2985 IPv6はサポートされません。
  • CLIENT-4698 Params that are passed to your TwiML Application while making calls are not URL encoded
  • CLIENT-4547 Insights is not published
  • CLIENT-4672 CLIENT-4673 Error codes 20157 and 20151 report different message and explanation text than Voice 2.0 SDKs
  • CLIENT-4537 PCMU is the only supported codec. We plan on adding support for Opus moving forward. #117

3.0.0-preview2

August 28, 2018

改善点

  • Introduced a new callback method [TVOCallDelegate callDidStartRinging:]. This callback is emitted once before the [TVOCallDelegate callDidConnect:] callback when the callee is being alerted of a Call. The duration of the TVOCallStateRinging is determined by the answerOnBridge flag provided in the Dial verb of your TwiML application associated with this client. If the answerOnBridge flag is false, which is the default, the [TVOCallDelegate callDidConnect:] callback will be emitted immediately after [TVOCallDelegate callDidStartRinging:]. If the answerOnBridge flag is true this will cause the Call to emit the callDidConnect callback only until the call is answered. See answeronbridge for more details on how to use it with the Dial TwiML verb. If the twiML response contains a Say verb, then the call will emit the [TVOCallDelegate callDidConnect:] callback immediately after [TVOCallDelegate callDidStartRinging:] is raised, irrespective of the value of answerOnBridge being set to true or false.
  • Added a new Call state TVOCallStateRinging.
  • TwilioVoice.region is moved to TVOCallOptions.region.
  • Added a getStatsWithBlock: method to TVOCall that builds a TVOStatsReport with metrics for all the audio tracks in a Call.

既知の問題

  • CLIENT-5121 The apps using 3.0.0-preview2 may need to include NSCameraUsageDescription key and purpose string in it's Info.plist in order to submit the app to the App Store. The WebRTC used by the Twilio Voice SDK is using camera APIs. We are working on building the Voice SDK with the audio only variant of WebRTC where this workaround will not be required. #163
  • CLIENT-5059 Calls made to a client or PSTN number that have a long duration before answering may not get connected.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via TVOConnectOptions or TVOAcceptOptions. ICE servers can be obtained from Twilio Network Travarsal Service.
  • CLIENT-4805 The SDK size is significantly larger than 2.x. A reduced size will be introduced during the beta period.
  • CLIENT-4998 Network handoff, and subsequent connection renegotiation is not supported.
  • CLIENT-2985 IPv6はサポートされません。
  • CLIENT-4698 Params that are passed to your TwiML Application while making calls are not URL encoded
  • CLIENT-4547 Insights is not published
  • CLIENT-4672 CLIENT-4673 Error codes 20157 and 20151 report different message and explanation text than Voice 2.0 SDKs
  • CLIENT-4537 PCMU is the only supported codec. We plan on adding support for Opus moving forward. #117

3.0.0-preview1

August 10, 2018

This is our first WebRTC based release using Chromium WebRTC 57.

This SDK introduces audio device APIs. The Voice SDK uses TVODefaultAudioDevice by default. This release intruduces a new protocol, TVOAudioDevice. This protocol gives you the ability to replace TVODefaultAudioDevice. By implementing the TVOAudioDevice protocol, you can write your own audio capturer to feed audio samples to the Voice SDK and an audio renderer to receive the remote audio samples. For example, you could integrate with ReplayKit2 and capture application audio for broadcast or play music using AVAssetReader.

This SDK introduces TVOConnectOptions and TVOAcceptOptions to allow developers to make behaviorial changes associated with a Call.

This SDK allows multiple active Calls to be managed by the application.

改善点

  • Introduced TwilioVoice.audioDevice class property. You should set your audio device on TwilioVoice.audioDevice before performing any other actions with the SDK such as creating Tracks or connecting to a Call.
  • Added TVODefaultAudioDevice to render and capture audio. By default, the Voice SDK uses TVODefaultAudioDevice to capture and render audio.
  • Added the ability to provide your own audio capturing and rendering via the TVOAudioDevice protocol. As a part of this change we've also added TVOAudioFormat which describes audio that is being captured and rendered.
  • This release deprecates CallKitIntegration category from TwilioVoice in favor of a new property called TVODefaultAudioDevice.enabled. This property provides developers with a mechanism to enable or disable the activation of the audio device prior to connecting to a Call or to stop or start the audio device while you are already connected to a Call. A Call can now be connected without activating the audio device by setting TVODefaultAudioDevice.enabled to NO and can be enabled during the lifecycle of the Call by setting TVODefaultAudioDevice.enabled 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 disable the audio device during a call.

Examples #1 - Changing the audio route from receiver to the speaker in a live call:

// The Voice SDK uses TVODefaultAudioDevice by default.

// ... connect to a Call. The `TVODefaultAudioDevice` is configured to route audio to the receiver by default.

TVODefaultAudioDevice *audioDevice = (TVODefaultAudioDevice *)TwilioVoice.audioDevice;

audioDevice.block =  ^ {
    // We will execute `kDefaultAVAudioSessionConfigurationBlock` first.
    kDefaultAVAudioSessionConfigurationBlock();

    if (![session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&error]) {
        NSLog(@"AVAudiosession overrideOutputAudioPort %@",error);
    }
};
audioDevice.block();

Example #2 - Connecting to a Call using the AVAudioSessionCategoryPlayback category:

id<TVOAudioDevice> audioDevice = [TVODefaultAudioDevice audioDeviceWithBlock:^ {

    // Execute the `kDefaultAVAudioSessionConfigurationBlock` first.
    kDefaultAVAudioSessionConfigurationBlock();

    // Overwrite the category to `playback`
    AVAudioSession *session = [AVAudioSession sharedInstance];
    NSError *error = nil;
    if (![session setCategory:AVAudioSessionCategoryPlayback
                         mode:AVAudioSessionModeVoiceChat
                      options:AVAudioSessionCategoryOptionAllowBluetooth
                        error:&error]) {
        NSLog(@"AVAudioSession setCategory:options:mode:error: %@",error);
    }
}];

TwilioVoice.audioDevice = audioDevice;

TVOCall *call = [TwilioVoice connectWithOptions:connectOptions delegate:self];
  • Migrated the API to make an outbound Call from [TwilioVoice call] to [TwilioVoice connectWithOptions:delegate:].
TVOConnectOptions *connectOptions = [TVOConnectOptions optionsWithAccessToken:self.accessToken
                                                                       block:^(TVOConnectOptionsBuilder *builder) {
   builder.params = twiMLParams;
   builder.uuid = [NSUUID UUID];
}];
TVOCall *call = [TwilioVoice connectWithOptions:connectOptions delegate:self];
  • Migrated the API to accept a TVOCallInvite using TVOAcceptOptions.
TVOAcceptOptions *options = [TVOAcceptOptions optionsWithCallInvite:self
   block:^(TVOAcceptOptionsBuilder *builder) {
   builder.uuid = weakSelf.callInvite.uuid;
}];
TVOCall *call = [callInvite acceptWithOptions:options delegate:strongSelf];
  • Added standalone log modules: TVOLogModuleCore, TVOLogModulePlatform, TVOLogModuleSignaling and TVOLogModuleWebRTC.
  • [TwilioVoice setModule:logLevel:][TwilioVoice setLogLevel:module:] になりました。
  • [TwilioVoice logLevelForModule:] is added for retrieving log level for specific module.
  • [TwilioVoice version] is now [TwilioVoice getVersion] to avoid type conflict with NSObject.
  • Voice iOS SDK 3.0.0 supports iOS 10.0 and later versions.

既知の問題

  • CLIENT-5121 The apps using 3.0.0-preview1 may need to include NSCameraUsageDescription key and purpose string in it's Info.plist in order to submit the app to the App Store. The WebRTC used by the Twilio Voice SDK is using camera APIs. We are working on building the Voice SDK with the audio only variant of WebRTC where this workaround will not be required. #163
  • CLIENT-5059 Calls made to a client or PSTN number that have a long duration before answering may not get connected.
  • [CLIENT-4943] Restrictive networks may fail unless ICE servers are provided via TVOConnectOptions or TVOAcceptOptions. ICE servers can be obtained from Twilio Network Travarsal Service.
  • [CLIENT-4805] The SDK size is significantly larger than 2.x. A reduced size will be introduced during the beta period.
  • [CLIENT-4998] Network handoff, and subsequent connection renegotiation is not supported.
  • [CLIENT-2985] IPv6 is not supported.
  • [CLIENT-4698] Params that are passed to your TwiML Application while making calls are not URL encoded
  • [CLIENT-4547] Insights is not published
  • [CLIENT-4672] [CLIENT-4673] Error codes 20157 and 20151 report different message and explanation text than Voice 2.0 SDKs
Rate this page:

ヘルプが必要ですか?

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.