Я еще не пробовал, но вы можете изменить свойство загруженного звука:
kAudioServicesPropertyIsUISound
Значение UInt32, где 1 означает, что для аудиофайла, заданного системным звуком, переданным в параметре inSpecifier, сервер System Sound учитывает пользовательские настройки в настройке Sound Effects и молчит, когда пользователь отключает звуковые эффекты. .
Это свойство установлено в 1 по умолчанию. Установите значение 0, чтобы системный звук всегда воспроизводился при передаче в AudioServicesPlaySystemSound, независимо от настроек пользователя в настройках звука .
Доступный в iPhone OS 2.0 и позже.
Объявлено в AudioServices.h.
Я ожидаю, что, сделав все остальное правильно, установив для свойства значение 0, система сообщит, что ваш звук - это звук приложения, а не звук «UI» и, следовательно, может быть отключен.
РЕДАКТИРОВАТЬ: похоже, что это не может быть сделано с системными звуками. Если вы пройдете через OpenAL, вы, очевидно, сможете играть с установленной кнопкой отключения звука.
Я построил пример SysSound и добавил следующий код, чтобы установить флаг, как вы сделали выше, и он вообще не играет на немом.
// Set the sound to always play
int setTo0 = 0;
AudioServicesSetProperty( kAudioServicesPropertyIsUISound,0,nil,
4,&setTo0 );