在Monotouch中使用BeginReceivingRemoteControlEvents

时间:2010-09-13 22:39:02

标签: ios4 xamarin.ios avfoundation

我让我的应用程序在后台播放音乐,我也成功地通过调用BeginReceivingRemoteControlEvents使其成为媒体播放器。但是,永远不会调用RemoteControlReceived方法。 Objective C中的相同逻辑工作正常。任何样品或指南都表示赞赏。

2 个答案:

答案 0 :(得分:0)

您需要确保将其置于第一响应者视图中,如果不是,则需要沿着响应者链向上传递该事件,直到它到达您的远程事件。试着想象远程控制事件与键盘上的按键相同。例如,如果应用程序专注于某个按钮,并且您按下某些键盘按键,则不会发生任何事情,因为按钮不会按键按键。 您的代码中也出现了类似的情况。尝试使用BeginReceivingRemoteControlEvents创建一个基本的,单个查看的项目,并使用方法覆盖来接收事件(无法记住它是什么,RemoteEventReceived()或类似的东西。)当你按下远程按钮时,这应该被触发。

(对不起,我不能给出示例代码,而不是在mac的前面)

答案 1 :(得分:0)

您可能希望尝试使用以后的机制来侦听远程控制事件。例如,如果您想收听耳机按钮:

    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;

这只适用于后台,如果您是在后台播放的音频应用程序(即您必须在应用程序功能中设置该背景模式)。