Scenario
Application and voice audio continues in iOS when the Ring/Silent switch is set to silent.
Resolution
For Vivox on iOS, the AudioSession category must be set to AVAudioSessionCategoryPlayAndRecord before you initialize the Vivox SDK as part of your Obj-C/C++ application code, which is detailed in Why am I not transmitting audio in iOS? For more information, see the Apple developer documentation on AVAudioSessionCategoryPlayback and AVAudioSessionCategoryPlayAndRecord.
When in this audio category, audio render continues with the Ring/Silent switch set to silent when the UIBackgroundModes audio key is added to the app’s info.plist file. This also prevents the render volume from being reduced below 1/16 (0.0625). This is a limitation imposed by iOS, and not by the Vivox SDK. For more information, see the Apple developer documentation on UIBackgroundModes.
A possible workaround is to observe changes in AVAudioSession.outputVolume that are being set by the user and then mute your game audio output based on the observed value. For example implementations of this workaround, see How To: Observe the iOS volume level to programmatically mute game audio. For more information, see the Apple developer documentation on AVAudioSession.outputVolume.
Note: Similar behavior can seen when using the AVAudioSessionCategoryPlayback category