В настоящее время я пытаюсь настроить фоновый звук для приложения, которое разрабатываю для 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 на пульте дистанционного управления в области многозадачности либо заставляет песню просто приостанавливаться на мгновение, а затем приостанавливать ее, либо каким-то образом заставляет песню воспроизводиться дважды.