Фоновое приложение для 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 учебный класс.

Другие вопросы по тегам