AVAudioPlayer
воспроизводит звук в фоновом режиме, и пользователь приостанавливает его либо с помощью элементов управления гарнитурой, либо с помощью элементов управления экрана блокировки. Если пользователь делает это менее 30 секунд и пытается возобновить работу - все работает нормально. Если пользователь пытается возобновить его более чем через 30 секунд - звук начинает воспроизводиться, но через секунду срабатывает audioSessionInterruptionNotification
из AVAudioSessionDelegate
, с AVAudioSessionInterruptionWasSuspendedKey
YES.
После этого приложение полностью перестает реагировать на события удаленного управления. События запускаются, но AVAudioPlayer
не реагирует ни на какие команды. На самом деле [[self audioplayer] isAudioPlaying]
возвращает НЕТ, пока воспроизведение продолжается.
Если я попытаюсь справиться с этим следующим образом - это помогает (поэтому я устанавливаю AVAudioSession в неактивное состояние, а затем метод playHelper активирует его и воспроизводит звук), но возникает сбой, потому что уведомление срабатывает после того, как оно начинает играть.
- (void)audioSessionInterruptionNotification:(NSNotification *)interruption {
UInt8 interruptionType = [[interruption.userInfo valueForKey:AVAudioSessionInterruptionTypeKey] intValue];
NSLog(@"Session interrupted > --- %s ---\n", interruptionType == AVAudioSessionInterruptionTypeBegan ? "Begin Interruption" : "End Interruption");
NSDictionary *notificationUserInfo = [interruption userInfo];
if (interruptionType == AVAudioSessionInterruptionTypeBegan) {
if ([notificationUserInfo valueForKey:AVAudioSessionInterruptionWasSuspendedKey]) {
[[AVAudioSession sharedInstance] setActive:false error:nil];
[self playHelper];
} else {
[self interruptionStarted];
}
} else if (interruptionType == AVAudioSessionInterruptionTypeEnded) {
[self interruptionEnded:(NSUInteger)[notificationUserInfo objectForKey:AVAudioSessionInterruptionOptionKey]];
}
}
Посоветуйте, что может быть причиной этого.