Фоновое приложение для iPhone с помощью MPMusicPlayer - PullRequest
3 голосов
/ 20 июля 2010

Я работаю над приложением 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 Ответ

5 голосов
/ 21 июля 2010

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

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

...