如何禁用暂停/播放通过 Airplay 连接到 Apple TV 的 AVPlayer 的功能
Posted
技术标签:
【中文标题】如何禁用暂停/播放通过 Airplay 连接到 Apple TV 的 AVPlayer 的功能【英文标题】:How to disable the ability to pause/play an AVPlayer connected to an Apple TV via Airplay 【发布时间】:2015-01-18 02:29:14 【问题描述】:我正在开发一个使用 AVPlayer
流式传输实时媒体的 ios 应用程序。通过 Airplay 连接到 Apple TV 时,可以使用 Apple TV 遥控器暂停和恢复内容。
我正在寻找禁用此功能的方法。
我尝试过使用:- (void)remoteControlReceivedWithEvent:(UIEvent *)receivedEvent
,它适用于耳机远程和锁屏控制事件,但不适用于 Apple TV。
我也尝试过使用MPRemoteCommandCenter
,它也不会拦截来自 Apple TV 的事件。
【问题讨论】:
您已经找到解决方案了吗? 我的理解是不可能做到这一点。由于直播是分段提供的,因此可以在这些分段中进行搜索以及暂停和播放。 【参考方案1】:我是来实现这个AVPlayerController的。尚未在设备中进行测试。
首先在 AVPlayercontroller 中实现播放/暂停手势:
UITapGestureRecognizer *tapGestureRec = [[UITapGestureRecognizer alloc] initWithTarget: self action: @selector(PlayPause)];
tapGestureRec.allowedPressTypes = @[@(UIPressTypePlayPause)];
[self.playerViewController.view addGestureRecognizer: tapGestureRec];
实现手势方法并始终从中调用播放方法:
-(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;
【讨论】:
以上是关于如何禁用暂停/播放通过 Airplay 连接到 Apple TV 的 AVPlayer 的功能的主要内容,如果未能解决你的问题,请参考以下文章