Если вы воспроизводите короткий системный звук (короче 30 секунд) с использованием механизма системных звуковых служб (код будет выглядеть примерно так)
#include <AudioToolbox/AudioToolbox.h>
SystemSoundID aSoundID;
/* Setup */
SystemSoundID aSoundID;
OSStatus error =
AudioServicesCreateSystemSoundID((CFURLRef)aFileURL, &aSoundID);
if (error == kAudioServicesNoError) { // success
_soundID = aSoundID;
}
/* Play */
AudioServicesPlaySystemSound(aSoundID);
/* Dispose */
AudioServicesDisposeSystemSoundID(aSoundID);
Вы можете использовать AudioServicesSetProperty , чтобы установить два свойства с помощью этой функции.
Это:
kAudioServicesPropertyIsUISound = 'isui',
kAudioServicesPropertyCompletePlaybackIfAppDies = 'ifdi'
kAudioServicesPropertyIsUISound , если для него установлено значение 1, это означает, что для аудиофайла, указанного системным звуком, переданным в параметре inSpecifier, сервер системных звуковых сигналов учитывает пользовательские настройки в предпочтении «Звуковые эффекты» и является беззвучный, когда пользователь отключает звуковые эффекты.
Это свойство по умолчанию установлено в 1. Установите значение 0, чтобы системный звук всегда воспроизводился при передаче в AudioServicesPlaySystemSound, независимо от настроек пользователя в настройках звука.
kAudioServicesPropertyCompletePlaybackIfAppDies , если установлено значение 1, означает, что аудиофайл, указанный системным звуком, переданным в параметре inSpecifier, должен завершить воспроизведение, даже если клиентское приложение завершается. Это может произойти, например, если пользователь выходит или приложение неожиданно завершает работу во время воспроизведения звука. Значение по умолчанию - 0. То есть вы должны явно установить значение этого свойства в 1, если хотите, чтобы звук завершался, даже если приложение завершает работу.
РЕДАКТИРОВАТЬ: После перечитывания вашего вопроса, может показаться, что это может быть больше "Как установить свойство", чем "Что делает эта вещь" В этом случае, следующее будет более полезным :
Предполагая, что вы настроили звук, как я указал выше, вы можете настроить этот конкретный объект SystemSoundID так, чтобы он игнорировал настройку «без звука» на боковой панели телефона, выполнив следующие действия:
UInt32 flag = 0;
err = AudioServicesSetProperty(kAudioServicesPropertyIsUISound,
sizeof(UInt32),
&aSoundID,
sizeof(UInt32),
&flag);