В настоящее время я пытаюсь настроить фоновый звук для приложения, которое я разрабатываю для iOS 4. У приложения нет специального музыкального проигрывателя viewController
, однако, в отличие от других фоновых аудио-приложений, таких как Pandora, которые делает задачу несколько более запутанной.
Я правильно установил соответствующие настройки Info.plist
и у меня есть объект AVAudioPlayer
в моем делете приложения, доступный извне. Когда пользователь воспроизводит песню, я заменяю AVAudioPlayer
на новую, инициализированную песней, и воспроизвожу ее. Все это отлично работает, но теперь я не знаю, как поддерживать поддержку событий дистанционного управления.
Основываясь на документации Apple, у меня есть следующее:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
[self resignFirstResponder];
}
- (BOOL)canBecomeFirstResponder {
return YES;
}
- (void)remoteControlReceivedWithEvent:(UIEvent *)event {
switch(event.subtype) {
case UIEventSubtypeRemoteControlTogglePlayPause:
if([iPhoneAppDelegate backgroundAudioPlayer].playing)
[iPhoneAppDelegate pauseBackgroundAudioPlayer];
else
[iPhoneAppDelegate playBackgroundAudioPlayer];
break;
}
}
Дело в том, где я могу это поставить? Документация Apple, похоже, предполагает, что это должно идти в каком-то контроллере вида где-то, но в моем приложении много контроллеров и контроллеров навигации. Где бы я ни пыталась это поделать, почему-то нажатие кнопки Toggle Play/Pause на пульте дистанционного управления многозадачного лотка приводит к тому, что песня просто приостанавливается на мгновение, а затем приостанавливается или каким-то образом заставляет песню проигрывать дважды.