在后台调用beginReceivingRemoteControlEvents

时间:2015-02-10 18:33:50

标签: ios audio background remote-control

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

到目前为止,我已经得出结论,我无法在后台更改类别并继续使用遥控器。

当我在类别之间切换时,例如AVAudioSessionCategoryPlayback或AVAudioSessionCategoryPlayAndRecord,音频会话被停用,我必须再次调用beginReceivingRemoteControlEvents。当这在前景中完成时,它完美地工作。当它在后台完成时,似乎新的beginReceivingRemoteControlEvents不起作用。

任何有关如何实现这一目标的帮助都会非常感激。

1 个答案:

答案 0 :(得分:2)

您可能希望使用较新的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;