TVOCall Class Reference
| Inherits from | NSObject | 
|---|---|
| Declared in | TVOCall.h | 
Overview
   The TVOCall class represents a signaling and media session between the host device and Twilio infrastructure.
   Calls can represent an outbound call initiated from the SDK via [TwilioVoice connectWithAccessToken:delegate:]
   or an incoming call accepted via a [TVOCallInvite acceptWithDelegate:]. Devices that initiate an outbound
   call represent the caller and devices that receive a TVOCallInvite represent the callee.
   The lifecycle of a call differs for the caller and the callee. Making or accepting a call requires a TVOCallDelegate
   which receives call state changes defined in TVOCallState. The TVOCallState can be obtained at any time from
   the state property of TVOCall.
   The caller callback behavior is affected 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 [TVOCallDelegate callDidConnect:] callback only until the call
   is answered.
   See Answer on Bridge documentation for
   more details on how to use it with the Dial TwiML verb.
The following table provides expected call sequences for common scenarios from the perspective of the caller:
| Scenario | TVOCallDelegateCallbacks | TVOCallStateTransitions | 
| A call is initiated and the caller disconnects before reaching the ringing state. | 
 | |
| A call is initiated, reaches the ringing state and the caller disconnects before being connected. | 
 | |
| A call is initiated and the call fails to connect before reaching the ringing state. | 
 | |
| A call is initiated and the call fails to connect after reaching the ringing state. | 
 | |
| A call is initiated, becomes connected, and ends for one of the following reasons: 
 | 
 | 
The following table provides expected call sequences for common scenarios from the callee perspective:
| Scenario | TVOCallDelegateCallbacks | TVOCallStateTransitions | 
| A TVOCallInviteis accepted and the callee disconnects the call before being connected. | 
 | |
| A TVOCallInviteis accepted and the call fails to connect. | 
 | |
| A TVOCallInviteis accepted, becomes connected, and ends for one of the following reasons:
 | 
 | 
   It is important to call the [TVOCall disconnect] method to terminate the call. Not calling [TVOCall disconnect]
   results in leaked native resources and may lead to an out-of-memory crash. If the call is disconnected by the
   caller, callee, or Twilio, the SDK will automatically free native resources. However, [TVOCall disconnect] is
   an idempotent operation so it is best to call this method when you are certain your application no longer needs
   the object.
   It is strongly recommended that <TVOCall> instances are created and accessed from a single dispatch queue.
   Accessing a <TVOCall> instance from multiple queues may cause synchronization problems. TVOCallDelegate methods
   are called on the main dispatch queue by default or on the delegateQueue provided to TVOConnectOptions
   or TVOAcceptOptions upon initiating or accepting a call.
Insights
The following connection events are reported to Insights during a call:
| Group Name | Event Name | Description | Since version | 
| connection | muted | Audio input of the call is muted by calling [TVOCall setMuted:]withYES. | 3.0.0-beta2 | 
| connection | unmuted | Audio input of the call is unmuted by calling [TVOCall setMuted:]withNO. | 3.0.0-beta2 | 
| connection | accepted-by-remote | Server returns an answer to the Client’s offer over the signaling channel. | 3.0.0-beta2 | 
| connection | ringing | Call state transitions to TVOCallStateRinging. | 3.0.0-beta2 | 
| connection | connected | Call state transitions to TVOCallStateConnected. | 3.0.0-beta2 | 
| connection | disconnect-called | [TVOCall disconnect]is called. | 3.0.0-beta2 | 
| connection | disconnected-by-local | Call disconnected as a result of calling [TVOCall disconnect]. Call transitions toTVOCallStateDisconnected. | 3.0.0-beta2 | 
| connection | disconnected-by-remote | Call is disconnected by the remote. Call transitions to TVOCallStateDisconnected. | 3.0.0-beta2 | 
| connection | hold | Call is on hold by calling [TVOCall setOnHold:]withYES. | 3.0.0-beta2 | 
| connection | unhold | Call is on unhold by calling [TVOCall setOnHold:]withNO. | 3.0.0-beta2 | 
| connection | error | Error description. Call state transitions to TVOCallStateDisconnected. | 3.0.0-beta2 | 
The following ICE connection state events are reported to Insights during a call:
| Group Name | Event Name | Description | Since version | 
| ice-connection-state | new | The PeerConnection ice connection state changed to “new”. | 3.0.0-beta3 | 
| ice-connection-state | checking | The PeerConnection ice connection state changed to “checking”. | 3.0.0-beta3 | 
| ice-connection-state | connected | The PeerConnection ice connection state changed to “connected”. | 3.0.0-beta3 | 
| ice-connection-state | completed | The PeerConnection ice connection state changed to “completed”. | 3.0.0-beta3 | 
| ice-connection-state | closed | The PeerConnection ice connection state changed to “closed”. | 3.0.0-beta3 | 
| ice-connection-state | disconnected | The PeerConnection ice connection state changed to “disconnected”. | 3.0.0-beta3 | 
| ice-connection-state | failed | The PeerConnection ice connection state changed to “failed”. | 3.0.0-beta3 | 
The following ICE gathering state events are reported to Insights during a call:
| Group Name | Event Name | Description | Since version | 
| ice-gathering-state | new | The PeerConnection ice gathering state changed to “new”. | 3.0.0-beta3 | 
| ice-gathering-state | gathering | The PeerConnection ice gathering state changed to “checking”. | 3.0.0-beta3 | 
| ice-gathering-state | complete | The PeerConnection ice gathering state changed to “connected”. | 3.0.0-beta3 | 
The following signaling state events are reported to Insights during a call:
| Group Name | Event Name | Description | Since version | 
| signaling-state | stable | The PeerConnection signaling state changed to “stable”. | 3.0.0-beta3 | 
| signaling-state | have-local-offer | The PeerConnection signaling state changed to “have-local-offer”. | 3.0.0-beta3 | 
| signaling-state | have-remote-offers | The PeerConnection signaling state changed to “have-remote-offers”. | 3.0.0-beta3 | 
| signaling-state | have-local-pranswer | The PeerConnection signaling state changed to “have-local-pranswer”. | 3.0.0-beta3 | 
| signaling-state | have-remote-pranswer | The PeerConnection signaling state changed to “have-remote-pranswer”. | 3.0.0-beta3 | 
| signaling-state | closed | The PeerConnection signaling state changed to “closed”. | 3.0.0-beta3 | 
The following network quality warning and network quality warning cleared events are reported to Insights during a call:
| Group Name | Event Name | Description | Since version | 
| network-quality-warning-raised | high-jitter | Three out of last five jitter samples exceed 30 ms. | 3.0.0-beta3 | 
| network-quality-warning-cleared | high-jitter | high-jitter warning cleared if last five jitter samples are less than 30 ms. | 3.0.0-beta3 | 
| network-quality-warning-raised | low-mos | Three out of last five mos samples are lower than 3. | 3.0.0-beta3 | 
| network-quality-warning-cleared | low-mos | low-mos cleared if last five mos samples are higher than 3. | 3.0.0-beta3 | 
| network-quality-warning-raised | high-packet-loss | Three out of last five packet loss samples show loss greater than 1%. | 3.0.0-beta3 | 
| network-quality-warning-cleared | high-packet-loss | high-packet-loss cleared if last five packet loss samples are lower than 1%. | 3.0.0-beta3 | 
| network-quality-warning-raised | high-rtt | Three out of last five RTT samples show greater than 400 ms. | 3.0.0-beta3 | 
| network-quality-warning-cleared | high-rtt | high-rtt warning cleared if last five RTT samples are lower than 400 ms. | 3.0.0-beta3 | 
The following audio level warning and audio level warning cleared events are reported to Insights during a call
| Group Name | Event Name | Description | Since version | 
| audio-level-warning-raised | constant-audio-input-level | Last ten audio input samples have the same audio level | 3.0.0-beta3 | 
| audio-level-warning-cleared | constant-audio-input-level | constant-audio-input-level warning cleared if the current audio input level sample differs from the previous audio input level sample | 3.0.0-beta3 | 
| audio-level-warning-raised | constant-audio-output-level | Last ten audio output samples have the same audio level | 3.0.0-beta3 | 
| audio-level-warning-cleared | constant-audio-output-level | constant-audio-output-level warning cleared if the current audio output level sample differs from the previous audio output level sample | 3.0.0-beta3 | 
The following feedback events are reported to Insights during a call:
| Group Name | Event Name | Description | Since version | 
| feedback | received | [TVOCall postFeedback:issue:]is called if the score is notTVOCallFeedbackScoreNotReportedor the issue type is notTVOCallFeedbackIssueNotReported. | 3.0.0-beta3 | 
| feedback | received-none | [TVOCall postFeedback:issue:]is called if the score isTVOCallFeedbackScoreNotReportedand the issue type isTVOCallFeedbackIssueNotReported. | 3.0.0-beta3 | 
Properties
  from
	From value of the Call.
@property (nonatomic, strong, readonly, nullable) NSString *fromDiscussion
This may be nil if the call object was created by calling the
[TwilioVoice connectWithOptions:delegate:] method or if the call object was
created by calling the [TVOCallInvite acceptWithOptions:delegate:] method
where the from value of the TVOCallInvite object was also nil.
Declared In
TVOCall.h
  to
	To value of the Call.
@property (nonatomic, strong, readonly, nullable) NSString *toDiscussion
This may be nil if the call object was created by calling the
[TwilioVoice connectWithOptions:delegate:] method.
Declared In
TVOCall.h
  sid
	A server assigned identifier (SID) for the Call.
@property (nonatomic, strong, readonly, nonnull) NSString *sidDiscussion
A SID is a globally unique identifier which can be very useful for debugging Call traffic. The Call sid
may be nil until the call is in TVOCallStateRinging state.
Declared In
TVOCall.h
  muted
	Property that defines if the Call is muted.
@property (nonatomic, assign, getter=isMuted) BOOL mutedDiscussion
The Voice SDK’s media engine will start sending silent audio frames when the Call is muted. Setting the
property will only take effect if the state is TVOCallStateConnected.
Declared In
TVOCall.h
  state
	The current state of the Call.
@property (nonatomic, assign, readonly) TVOCallState stateDiscussion
All TVOCall instances start in TVOCallStateConnecting and end in TVOCallStateDisconnected.
After creation, a Call will transition to TVOCallStateConnected if successful or TVOCallStateDisconnected if the
connection attempt fails.
See Also
Declared In
TVOCall.h
  onHold
	Property that defines if the Call is on hold.
@property (nonatomic, getter=isOnHold) BOOL onHoldDiscussion
If the Call is on hold, The Voice SDK’s media engine will send silent audio frames to the remote party, and remote party’s audio playback will be disabled.
Declared In
TVOCall.h
General Call Actions
– disconnect
	Disconnects the Call.
- (void)disconnectDiscussion
Calling this method on a TVOCall that is in the state TVOCallStateDisconnected has no effect.
Declared In
TVOCall.h
– sendDigits:
	Send a string of digits.
- (void)sendDigits:(nonnull NSString *)digitsParameters
| digits | A string of characters to be played. Valid values are ‘0’ - ‘9’, ‘*’, ‘#’, and ‘w’. Each ‘w’ will cause a 500 ms pause between digits sent. | 
|---|
Discussion
Calling this method on a TVOCall that is not in the state TVOCallStateConnected has no effect.
Declared In
TVOCall.h
– getStatsWithBlock:
	Retrieve stats for the audio track.
- (void)getStatsWithBlock:(nonnull TVOCallGetStatsBlock)blockParameters
| block | The block to be invoked when the stats are available. | 
|---|
Declared In
TVOCall.h
– postFeedback:issue:
	Posts the feedback collected for this Call to Twilio.
- (void)postFeedback:(TVOCallFeedbackScore)score issue:(TVOCallFeedbackIssue)issueParameters
| score | The quality score of the Call. | 
|---|---|
| issue | The issue associated with the Call. | 
Discussion
If TVOCallFeedbackScoreNotReported and TVOCallFeedbackIssueNotReported are passed, Twilio will report feedback was not available for this call.
See Also
Declared In
TVOCall.h
CallKit Methods
  uuid
	A unique identifier for the Call.
@property (nonatomic, strong, readonly, nonnull) NSUUID *uuidDiscussion
Use this UUID as an argument to CallKit methods.
You can provide a UUID for outgoing calls using [TwilioVoice connectWithOptions:delegate:].
Calls created via [TVOCallInvite acceptWithOptions:delegate:] inherit their uuid from the Invite itself.
Declared In
TVOCall.h