Как воспроизвести звук на iOS, когда включен переключатель отключения звука

Возможный дубликат:
воспроизведение звука на iphone даже в беззвучном режиме

Я пытаюсь воспроизвести короткий звук (обозначающий завершение таймера) и реализовал его как системный звук. Поскольку мое приложение является таймером, я хотел бы, чтобы звук был слышен, даже если переключатель отключения звука включен.

// Load the sound

NSString *path = [[NSBundle mainBundle] pathForResource:@"tinshaw"
                                                 ofType:@"wav"];
NSLog(@"tinshaw: %@", path);
NSURL *pathURL = [NSURL fileURLWithPath:path];

// Create a system sound object representing the sound file.
AudioServicesCreateSystemSoundID ( ((__bridge CFURLRef)pathURL), &completionSound);

// Play the Sound
AudioServicesPlaySystemSound(completionSound);

Я попытался изменить категорию аудиосессии на «AVAudioSessionCategoryPlayback», но это не сработало. Есть


person Community    schedule 01.06.2012    source источник


Ответы (2)


Подумайте о том, что вы просите на секунду. Что хорошего в отключении звука, если стороннее приложение может игнорировать его и все равно воспроизводить звуки?

Есть некоторые исключения, когда звуки будут воспроизводиться, когда устройство отключено, но они не для сторонних приложений.

person Shaggy Frog    schedule 02.06.2012
comment
Это зависит от того, что он делает... Интересный пост в блоге на тему marco.org/ 14.01.2012/без звука - person evanmcdonnal; 02.06.2012
comment
@Shaggy Frog: переключатель отключения звука на iPhone не рассматривается как отключение всех звуков даже самой Apple. В документации Apple упоминается, что есть случаи, когда звук должен быть слышен, несмотря на переключатель отключения звука — я просто не знал, как это сделать. Как я это вижу: если пользователь явно выполняет действие с намерением услышать звук, то звук должен воспроизводиться независимо от текущего положения переключателя отключения звука (вспомните таймер или приложение YouTube). Однако переключатель отключения звука должен всегда отключать любые звуки предупреждений или звуки приложений, которые явно не запрошены пользователем. - person ; 02.06.2012
comment
Обратите внимание, что это старо, но для тех, кто ищет (например, я), @evanmcdonnal и user1431759 правы в том, что в некоторых случаях ожидаемое поведение заключается в воспроизведении звука (например, музыкальных проигрывателях). Переключатель предназначен для отключения звука звонков/предупреждений, но не звуков, вызываемых пользователем. - person DannyT; 26.06.2014

+1 к @Мохнатой лягушке. Несмотря на то, что существуют API для воспроизведения звуков независимо от состояния переключателя отключения звука, они, безусловно, являются частными. Итак, в основном, ответ на ваш вопрос - это невозможно сделать. Однако вы МОЖЕТЕ использовать какое-то предупреждающее сообщение каждый раз при запуске приложения (в методе viewDidLoad), чтобы вежливо напомнить вашему пользователю, чтобы его телефон не отключался, если он хочет получать оповещения от вашего приложения.

person Radrider33    schedule 02.06.2012