Вы должны выполнить эту инициализацию в viewDidLoad :
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"test"
ofType:@"mp3"];
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:soundFilePath];
self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL
error:nil];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive: YES error: nil];
Это для инициализации аудио.Здесь, с MP3 с именем test , импортированным в проект.Обратите внимание, что часть beginReceivingRemoteControlEvents очень важна.Без этого вы не сможете начать играть с фона, просто продолжайте слушать музыку, уже воспроизводимую с переднего плана.
Теперь вам нужно прослушать событие didEnterInBackGround (вы можете пойти с applicationDidEnterBackground вашего делегата приложения, но таким образом вы можете поместить код в класс, к которому он принадлежит):
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didEnterBG:)
name:UIApplicationDidEnterBackgroundNotification
object:nil];
А теперь этот didEnterBG метод:
self.backgroundTimer = [NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(backgroundWork) userInfo:nil repeats:YES];
[self.backgroundTimer fire];
Здесь я повторяю этот звук каждые 10 секунд по личным причинам, но делаю все, что вам нужно.Наконец, метод backgroundWork :
- (void)backgroundWork{
[self.audioPlayer prepareToPlay];
[self.audioPlayer play];
}
Теперь ваш аудиофайл воспроизводится в фоновом режиме: -)
Вы также должны отметить, что ваше приложение должно иметь определенные правапродолжать делать работу в фоновом режиме.Вам необходимо установить флажок под «YourTarget» -> «Возможности» -> «Режимы фона»: аудио и AirPlay.В противном случае ОС прекратит работу вашего приложения через несколько минут в реальных условиях (без отладчика или инструмента).