Фоновое приложение для iPhone с помощью MPMusicPlayer
Я работаю над приложением 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];
}
1 ответ
Ты прав. Ваше приложение iPhone не будет работать в фоновом режиме при использовании MPMusicPlayerController
, Это также не позволит вам получать события удаленного управления.
Если вы хотите воспроизвести аудио из библиотеки iPod и продолжить работу приложения в фоновом режиме, вы должны использовать нижний уровень AVPlayer
учебный класс.