Я работаю над приложением iPhone iOS4, которое включает воспроизведение музыки из пользовательской библиотеки iPod. Я также хочу следить за тем, какие песни были воспроизведены, и иметь возможность менять песню произвольно, даже находясь в фоновом режиме. Поэтому я установил музыкальный проигрыватель, используя:
[self setMusicPlayer: [MPMusicPlayerController iPodMusicPlayer]];
Теперь я хочу, чтобы это приложение продолжало запускаться и воспроизводить музыку в фоновом режиме, поэтому я установил:
Required background modes: App plays audio
Проблема, с которой я столкнулся, заключается в том, что мое приложение теряет управление, когда оно перемещается в фоновый режим (когда вызывается applicationDidEnterBackground, т. Е. При переключениях приложений). Поскольку я использую iPodMusicPlayer, музыка продолжает воспроизводиться, но мое приложение не имеет контроля и поэтому не может отслеживать или изменять песню.
Теперь в документации Apple говорится, что ваше приложение должно продолжать выполняться в фоновом режиме, используя этот обязательный тег фоновых режимов, а мое - нет. Это потому, что я использую MPMusicPlayer? Есть ли способ обойти это? Есть идеи?
PS. Я также пытаюсь заставить удаленно заблокированные и многозадачные контроллеры iPod работать с моим приложением. Я использую код ниже, но remoteControlReceivedWithEvent никогда не вызывается! Работает ли это с MPMusicPlayer? Я видел это только с AVAudioPlayer.
- (void)remoteControlReceivedWithEvent:(UIEvent *)event {
NSLog(@"remoteControlReceivedWithEvent");
switch (event.subtype) {
case UIEventSubtypeRemoteControlTogglePlayPause:
NSLog(@"Play Pause");
break;
case UIEventSubtypeRemoteControlNextTrack:
NSLog(@"Next");
break;
default:
break;
}
}
- (BOOL)canBecomeFirstResponder {
NSLog(@"canBecomeFirstResponder");
return YES;
}
- (void) viewWillAppear:(BOOL)animated{
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
}