2

私のアプリには複数のタブがあり、各タブには AVPlayer のインスタンスがあります。ただし、AirPlay を有効にすると、「最初のプレイヤーが勝ち」ます。つまり、現在アクティブなタブのプレーヤーが AirPlay に接続し、別のタブに切り替えて再生を押しても何も起こりません。そのため、AirPlay に接続する AVPlayer の最初のインスタンスのみが実際に AirPlay を介して再生でき、他のタブのプレーヤーは機能しません。何をすべきか?

4

1 に答える 1

3

解決策は非常に簡単です。プレーヤーを含むビュー コントローラーが表示されたらallowsExternalPlayback、AVPlayer インスタンスを に設定し、表示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];
}

楽しみ。

于 2013-11-05T20:05:03.070 に答える