用beginReceivingRemoteControlEven

用beginReceivingRemoteControlEven

是否可以在后台调用beginReceivingRemoteControlEvents?有没有人遇到过类似情况的经历?

到目前为止,我得出的结论是,我不能在后台更改类别并继续使用 Remote 。

当我在类别之间切换时,例如AVAudioSessionCategoryPlayback或AVAudioSessionCategoryPlayAndRecord,音频 session 被停用,我必须再次调用beginReceivingRemoteControlEvents。当在前台完成此操作时,它可以完美运行。在后台完成操作后,新的beginReceivingRemoteControlEvents似乎无法使用。

我对如何实现这种目标的任何帮助将不胜感激。

最佳答案

您可能要使用更新的MPRemoteCommandCenter,而不是使用beginReceivingRemoteControlEvents。例如:

    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;

10-08 12:07