Вызов beginReceivingRemoteControlEvents в фоновом режиме

Должна ли быть возможность вызывать beginReceivingRemoteControlEvents в фоновом режиме? У кого-нибудь есть опыт работы с подобной ситуацией?

До сих пор я пришел к выводу, что я не могу менять категории и продолжать использовать пульты дистанционного управления в фоновом режиме.

Когда я переключаюсь между категориями, такими как AVAudioSessionCategoryPlayback или AVAudioSessionCategoryPlayAndRecord, аудиосеанс деактивируется, и мне приходится снова вызывать beginReceivingRemoteControlEvents. Когда это делается на переднем плане, это работает отлично. Когда это делается в фоновом режиме, кажется, что новый beginReceivingRemoteControlEvents не работает.

Любая помощь в том, как я могу достичь такой цели, будет очень признательна

1 ответ

Вместо использования beginReceivingRemoteControlEvents вы можете использовать более новый MPRemoteCommandCenter. Например:

    MPRemoteCommandCenter *commandCenter = [MPRemoteCommandCenter sharedCommandCenter];

    [commandCenter.togglePlayPauseCommand addTargetWithHandler:^MPRemoteCommandHandlerStatus(MPRemoteCommandEvent * _Nonnull event) {
        NSLog(@"toggle button pressed");
        return MPRemoteCommandHandlerStatusSuccess;
    }];

или, если вы предпочитаете использовать метод вместо блока:

    [commandCenter.togglePlayPauseCommand addTarget:self action:@selector(toggleButtonAction)];

Прекратить:

    [commandCenter.togglePlayPauseCommand removeTarget:self];

или же:

    [commandCenter.togglePlayPauseCommand removeTarget:self action:@selector(toggleButtonAction)];

Вам нужно добавить это в область включений вашего файла:

@import MediaPlayer;
Другие вопросы по тегам