Системные идентификаторы звука не будут воспроизводиться, если устройство отключено, поэтому, возможно, это и есть причина.(Они действительно предназначены только для эффектов пользовательского интерфейса, таких как оповещения и т. Д. Согласно официальной документации .)
Таким образом, у меня возникнет соблазн использовать AVAudioPlayer стиль подхода.В качестве примера реализации (без каламбура):
// *** In your interface... ***
#import <AVFoundation/AVFoundation.h>
...
AVAudioPlayer *testAudioPlayer;
// *** Implementation... ***
// Load the audio data
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"sample_name" ofType:@"wav"];
NSData *sampleData = [[NSData alloc] initWithContentsOfFile:soundFilePath];
NSError *audioError = nil;
// Set up the audio player
testAudioPlayer = [[AVAudioPlayer alloc] initWithData:sampleData error:&audioError];
[sampleData release];
if(audioError != nil) {
NSLog(@"An audio error occurred: \"%@\"", audioError);
}
else {
[testAudioPlayer setNumberOfLoops: -1];
[testAudioPlayer play];
}
// *** In your dealloc... ***
[testAudioPlayer release];
Вы также должны помнить об установке соответствующей категории аудио.(См. Метод AVAudioSession setCategory:error:
.)
Наконец, вам необходимо добавить библиотеку AVFoundation в ваш проект.Чтобы сделать это, нажмите на цель вашего проекта в столбце Groups & Files в XCode и выберите «Get Info».Затем выберите вкладку «Общие», нажмите «+» в нижней панели «Связанные библиотеки» и выберите «AVFoundation.framework».