是否可以在后台调用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;