Вызов 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;