Чтобы приложение не переходило в спящий режим при заблокированном экране, необходимо установить для аудио-сеанса тип kAudioSessionCategory_MediaPlayback.
Вот пример:
UInt32 category = kAudioSessionCategory_MediaPlayback;
OSStatus result = AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,
sizeof(category), &category);
if (result){
DebugLog(@"ERROR SETTING AUDIO CATEGORY!\n");
}
result = AudioSessionSetActive(true);
if (result) {
DebugLog(@"ERROR SETTING AUDIO SESSION ACTIVE!\n");
}
Если вы не установите категорию аудио-сеанса, ваше приложение будет спать.
Это будет только препятствовать тому, чтобы приложение было переведено в спящий режим, пока вы продолжаете воспроизводить аудио. Если вы прекратите воспроизведение звука, а экран все еще заблокирован, приложение перейдет в спящий режим, а ваши таймеры будут приостановлены.
Если вы хотите, чтобы приложение оставалось активным на неопределенный срок, вам необходимо воспроизвести «тихий» аудиофайл, чтобы он не спал.
У меня есть пример кода здесь: Предотвращение сна iPhone