Documentation

​
​

Development

User Acquisition

Monetization

Industry

Vivox Unreal SDK

Vivox Unreal SDK

Vivox
​
​
Vivox Unreal SDK
  • Overview
  • Get started
  • Release notes
  • Developer guide
    • Set up your project
    • Unity Authentication Service in Unreal
    • Create voice and text channels
    • Messaging
    • Audio management
    • Muting
    • In-game moderation
    • Android app development
    • iOS app development
      • Acoustic echo cancellation
      • Initialize the AVAudioSession on app startup
      • AVAudioSessionModeVoiceChat
      • AVAudioSession configuration when using WWise
      • iOS known limitations
        • Cannot set iOS device volume to 0 when Voice-Processing I/O unit is active
        • The iOS microphone recording indicator
        • AVAudioPlayer volume inconsistencies
        • Volume shifts
        • Restore audio volume
    • Server-side recording
    • Speech-to-text audio transcription
    • Text-to-speech
    • Real-time recording
    • Transmission
    • Troubleshooting
  • Tutorials
  • Reference
  1. Vivox Unreal SDK documentation

The iOS microphone recording indicator

Understand how the iOS microphone recording indicator works with Vivox.
Read time 1 minute
Last updated 8 months ago

iOS displays the red bar/orange dot recording indicator while the microphone is in use. When an iOS device is muted by using IAudioDevices::SetMuted(bool value), the Vivox SDK accesses the capture device (microphone) but does not collect or transmit any audio. This results in the recording indicator displaying.
To hard mute and prevent the recording indicator from displaying, set the capture device to IAudioDevices::NullDevice():
// Assumes an IClient *MyClient;const IAudioDevice &NewActive = MyClient->AudioInputDevices().NullDevice();IAudioDevices::FOnSetActiveDeviceCompletedDelegate SetActiveDeviceCompletedCallback;SetActiveDeviceCompletedCallback.BindLambda([](VivoxCoreError Status, const FString DeviceId){ // DeviceId should match "No Device" UE_LOG(LogTemp, Log, TEXT("SetActiveDevice [Input] Completed (%d): %s"), Status, *DeviceId);});MyClient->AudioInputDevices().SetActiveDevice(NewActive, SetActiveDeviceCompletedCallback);
To unmute, set the capture device to IAudioDevices::CommunicationDevice():
// Assumes an IClient *MyClient;const IAudioDevice &NewActive = MyClient->AudioInputDevices().CommunicationDevice();IAudioDevices::FOnSetActiveDeviceCompletedDelegate SetActiveDeviceCompletedCallback;SetActiveDeviceCompletedCallback.BindLambda([](VivoxCoreError Status, const FString DeviceId){ // DeviceId should match "Default Communication Device" UE_LOG(LogTemp, Log, TEXT("SetActiveDevice [Input] Completed (%d): %s"), Status, *DeviceId);});MyClient->AudioInputDevices().SetActiveDevice(NewActive, SetActiveDeviceCompletedCallback);
Note
Hard muting or unmuting causes a brief interruption to all audio that is playing from the device.

Copyright © 2026 Unity Technologies
LegalPrivacy PolicyCookiesDocumentation Terms of UseDo Not Sell or Share My Personal InformationYour Privacy Choices (Cookie Settings)

"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S and elsewhere (more info here). Other names or brands are trademarks of their respective owners.

Some pages are machine-translated for convenience, and may contain inaccuracies. In the event of conflicting information, the English version is authoritative.


    Report a problem with this page