在我的应用程序中,我有多个选项卡,并且在每个选项卡上都有一个AVPlayer实例。但是,当我激活AirPlay时,“第一个玩家获胜”。这意味着当前 Activity 选项卡上的播放器已连接到AirPlay,并且当我切换到其他选项卡并按播放时,什么也不会发生。因此,只有连接到AirPlay的AVPlayer的第一个实例才可以通过AirPlay实际播放,而其他选项卡上的播放器均无法工作。该怎么办?

最佳答案

解决方案非常简单:当包含播放器的视图控制器出现时,您将AVPlayer实例上的allowsExternalPlayback设置为YES,当消失时,将其设置为NO

示例:

- (void)viewWillAppear:(BOOL)animated
{
    // _player is an instance of AVPlayer
    if ([_player respondsToSelector:@selector(setAllowsExternalPlayback:)]) {
        // iOS 6+
        _player.allowsExternalPlayback = YES;
    } else {
        // iOS 5
        _player.allowsAirPlayVideo = YES;
    }

    [super viewWillAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated
{
    // _player is an instance of AVPlayer
    if ([_player respondsToSelector:@selector(setAllowsExternalPlayback:)]) {
        // iOS 6+
        _player.allowsExternalPlayback = NO;
    } else {
        // iOS 5
        _player.allowsAirPlayVideo = NO;
    }

    [super viewWillDisappear:animated];
}

请享用。

关于ios - 带有AVPlayer多个实例的AirPlay,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19797618/

10-11 07:34