SDL_Audio - no output when iPhone ringer set to silent?

Is that deliberate? It doesn’t seem very logical - the ringer “silent” setting should only really control the ringer, right, and the regular volume control should be the only thing that affects sound generated by SDL_Audio…

Nevermind, I found there was an SDL HINT for just this purpose :o)

Thank you!

Excuse me, which HINT is it

Hello

You need to use SDL_HINT_AUDIO_CATEGORY.

This helped me a lot with my SDL_mixer/SDL2_mixer game. Several playtesters had reported iOS audio not working. In each case, their ringer was turned to off. This fixed the problem for me. Thanks!

If you have the switch flipped to silent, it should respect that IMHO.

Kinda surprised/disappointed the OS even allows apps to get past it.

It’s pretty standard behaviour - go to YouTube and verify something is playing with sound, then turn the ringer off.

The sound continues, as you would expect, because you silenced the ringer not all sound output.

Yes, and I hate that and in my mind it’s a design flaw. The silence switch silences all other audio, including UI sounds, not just the ringer.

If I want to hear a game I’ll turn the switch off.

I can see both sides of the argument. If you think of it as a ‘silence’ switch then it’s reasonable to expect it to mute all sounds. But if you think of it as a ‘do not disturb’ switch it’s equally reasonable for it to mute only ‘unpredictable’ sounds such as the ringer, notifications, warnings etc., but to allow sounds and music that you have explicitly asked it to play.

After digging into this a little more, the following document recommends “Solo ambient’ mode for games, not ‘ambient’ nor ‘playblack’.

https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/audio/

Solo ambient

  • Sound isn’t essential, but it silences other audio. For example, a game with a soundtrack
  • Responds to the silence switch.
  • Doesn’t mix with other sounds.
  • Doesn’t play in the background.

Ambient

  • Sound isn’t essential, and it doesn’t silence other audio. For example, a game that lets people play music from another app during gameplay in place of the game’s soundtrack. Responds to the silence switch.
  • Mixes with other sounds.
  • Doesn’t play in the background.

Playback

  • Sound is essential and might mix with other audio. For example, an audiobook or educational app that teaches a foreign language, which people might want to listen to after leaving the app. Doesn’t respond to the silence switch.
  • May or may not mix with other sounds.
  • Can play in the background.

Solo ambient doesn’t mix with other sounds, but does respond to the silence switch. Unfortunately when deactivating this switch it is clearly labelled ‘Ringer’ which suggests a do-not-disturb mode. Which is why when Youtube and other apps aren’t disabled by the switch, the two people I spoke with assumed a game’s audio should work with the switch turned off. But this document is pretty clear that ‘Solo ambient’ is the recommended category for a game. I don’t see this included as an option in SDL_mixer currently.

1 Like

Where in the iOS settings does it call the silent switch a “Ringer switch” or anything like that? There’s a setting to change whether or not the ringer volume can be changed with the volume up/down buttons, but that’s it.

When I flip the switch on my iphone, it just says “Silent Mode On” or “Silent Mode Off”.

It calls it “silent”” with an animated ringer/bell icon when I turn mine on and off.

The older iPhone 6s I’m testing with says, “Ringer Silent” or “Ringer” with a volume level indicator. So maybe this has changed on newer devices.