4

我正在开发一个使用AVPlayer流式传输实时媒体的 iOS 应用程序。通过 Airplay 连接到 Apple TV 时,可以使用 Apple TV 遥控器暂停和恢复内容。

我正在寻找一种禁用此功能的方法。

我试过使用:- (void)remoteControlReceivedWithEvent:(UIEvent *)receivedEvent它适用于耳机远程和锁屏控制事件,但不适用于 Apple TV。

我也尝试过使用MPRemoteCommandCenter它也不会拦截来自 Apple TV 的事件。

4

1 回答 1

2

我是为了实现这个AVPlayerController。尚未在设备中进行测试。

首先在 AVPlayercontroller 中实现播放/暂停手势:

UITapGestureRecognizer *tapGestureRec = [[UITapGestureRecognizer alloc] initWithTarget: self action: @selector(PlayPause)];
tapGestureRec.allowedPressTypes = @[@(UIPressTypePlayPause)];
[self.playerViewController.view addGestureRecognizer: tapGestureRec];

实现手势方法并始终从中调用 play 方法:

-(void)PlayPause {
    [self.playerViewController.player play];
    NSLog(@"Do Anything or Nothing");
}

还添加观察者以捕获首次按下暂停按钮:

[player addObserver: self forKeyPath: @"rate" options: (NSKeyValueObservingOptionNew | NSKeyValueObservingOptionInitial) context: nil];

然后从“rate”观察者的暂停事件中调用播放器播放方法:

// When rate is 0.0, it means the player has stopped
if (![self.player rate]) {
     if(self.isLiveStream) {
         [self.playerViewController.player play]; // Disable pause in Live stream
     }
}

viewDidLoad中,将线性播放标志设置为 true 以禁用搜索控件:

self.playerViewController.requiresLinearPlayback = true;
于 2018-03-13T02:39:03.177 回答