2010-07-20 3 views
3

Я работаю над приложением iPhone iOS4, которое включает воспроизведение музыки из библиотеки iPod пользователя. Я также хочу отслеживать, какие песни были сыграны, и быть в состоянии изменить песню случайно, даже в фоновом режиме. Поэтому я музыкальный плеер с помощью:iPhone App, связанный с MPMusicPlayer

[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]; 
} 

ответ

5

Вы верны. Приложение iPhone не будет работать в фоновом режиме при использовании MPMusicPlayerController. Это также предотвратит получение событий дистанционного управления.

Если вы хотите воспроизвести аудио из библиотеки iPod и продолжить работать в фоновом режиме, вы должны использовать класс AVPlayer нижнего уровня.