TVODefaultAudioDevice Class Reference
| Inherits from | NSObject | 
|---|---|
| Conforms to | TVOAudioDevice | 
| Declared in | TVODefaultAudioDevice.h | 
Overview
TVODefaultAudioDevice allows you to record and playback audio when you are connected to a Call.
  block
	A block to configure the AVAudiosession.
@property (nonatomic, copy, nonnull) TVOAVAudioSessionConfigurationBlock blockDiscussion
If TVODefaultAudioDevice is enabled, the SDK executes this block and activates the audio session while
   connecting to a Call, otherwise it is the developer’s responsibility to execute the block. Please note that the getter of
   this property returns a wrapper block which internally executes the block you set. By default, the SDK returns a default
   wrapper block which executes kTVODefaultAVAudioSessionConfigurationBlock internally.
The following example demonstrates changing the audio route from speaker to receiver:
  TVODefaultAudioDevice *audioDevice = [TVODefaultAudioDevice audioDevice];
  TwilioVoiceSDK.audioDevice = audioDevice;
  //...connect to a Call with audioDevice. By default the audio route will be configured to receiver.
  audioDevice.block =  ^ {
      // We will execute `kTVODefaultAVAudioSessionConfigurationBlock` first.
      kTVODefaultAVAudioSessionConfigurationBlock();
      // Overwrite the audio route
      AVAudioSession *session = [AVAudioSession sharedInstance];
      NSError *error = nil;
      if (![session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&error]) {
          NSLog(@"AVAudiosession overrideOutputAudioPort %@",error);
      }
  };
  audioDevice.block();
			Declared In
TVODefaultAudioDevice.h
  ignoresPreferredAttributeConfigurationErrors
	A boolean to ignore preferred configuration errors.
@property (nonatomic, class) BOOL ignoresPreferredAttributeConfigurationErrorsDiscussion
When YES, calls to AudioSession preferred configuration ignore errors in configuring the audio session’s “preferred” attributes (e.g. preferredInputNumberOfChannels). Typically, configurations to preferred attributes are optimizations, and ignoring this type of configuration error allows code flow to continue along the happy path when these optimization are not available. The default value of this property is NO.
Declared In
TVODefaultAudioDevice.h
  enabled
	A boolean which enables playback and recording.
@property (nonatomic, assign, getter=isEnabled) BOOL enabledDiscussion
By default, the SDK initializes this property to YES. Setting it to NO forces the underlying CoreAudio graph to be stopped (if active), and prevents it from being started again. Setting the property to YES allows the audio graph to be started whenever there is audio to play or record in a Call.
Declared In
TVODefaultAudioDevice.h
– init
	Developers shouldn’t initialize this class directly.
- (null_unspecified instancetype)initDiscussion
Use defaultAudioDeviceto create a TVODefaultAudioDevice.
Declared In
TVODefaultAudioDevice.h
+ audioDevice
	Factory method to create an instance of TVODefaultAudioDevice.
+ (nonnull instancetype)audioDeviceDeclared In
TVODefaultAudioDevice.h
+ audioDeviceWithBlock:
	Factory method with a block to create an instance of TVODefaultAudioDevice.
+ (nonnull instancetype)audioDeviceWithBlock:(TVOAVAudioSessionConfigurationBlock _Nonnull)blockParameters
block | 
						The AVAudioSession configuration block.  | 
					
|---|
Return Value
An instance of TVODefaultAudioDevice.
Discussion
Use this factory method if you want to connect to a Call with your choice of audio session configuration.
The following example demonstrates connecting to a Call using the AVAudioSessionCategoryPlayback category:
  TwilioVoiceSDK.audioDevice = [TVODefaultAudioDevice audioDeviceWithBlock:^ {
      // We will execute `kTVODefaultAVAudioSessionConfigurationBlock` first.
      kTVODefaultAVAudioSessionConfigurationBlock();
      // Overwrite the category to `playback`
      AVAudioSession *session = [AVAudioSession sharedInstance];
      NSError *error = nil;
      if (![session setCategory:AVAudioSessionCategoryPlayback
                           mode:AVAudioSessionModeVoiceChat
                        options:AVAudioSessionCategoryOptionAllowBluetooth | AVAudioSessionCategoryOptionAllowBluetoothA2DP
                          error:&error]) {
          NSLog(@"AVAudioSession setCategory:options:mode:error: %@",error);
      }
  }];
  TVOConnectOptions *connectOptions = [TVOConnectOptions optionsWithToken:token
                                                                    block:^(TVOConnectOptionsBuilder *builder) {
      // configure builder attributes here
  }];
  TVOCall *call = [TwilioVoiceSDK connectWithOptions:connectOptions];
			Declared In
TVODefaultAudioDevice.h