Swift AVPlayerViewController添加AirPlay

Mik*_*ker 5 ios avplayer airplay swift avplayerviewcontroller

我正试图用我的AirPlay启用AVPlayerViewController.在文件中:

https://developer.apple.com/reference/avkit/avplayerviewcontroller

它指出

AVPlayerViewController自动支持AirPlay,但您需要先执行一些项目和音频会话配置,然后才能在应用程序中启用它.

Capabilities选项卡下,我确实启用了音频,AirPlay和画中画的背景模式.我创建了AVPlayerViewController如下:

// Create the view controller and player
let moviePlayerViewController: AVPlayerViewController = AVPlayerViewController()
let moviePlayer = AVPlayer(url: videoUrl!)

moviePlayer.allowsExternalPlayback = true
moviePlayer.usesExternalPlaybackWhileExternalScreenIsActive = true

// Initialize the AVPlayer
moviePlayerViewController.player = moviePlayer

// Present movie player and play when completion
self.present(moviePlayerViewController, animated: false, completion: {
    moviePlayerViewController.player?.play()
})
Run Code Online (Sandbox Code Playgroud)

我想到了两条线

moviePlayer.allowsExternalPlayback = true
moviePlayer.usesExternalPlaybackWhileExternalScreenIsActive = true
Run Code Online (Sandbox Code Playgroud)

会添加AirPlay支持,但我错了.我已经读过AirPlay可以通过添加来使用MPVolumeView,但这是用于自定义视频控制器,而不是内置的.任何帮助将不胜感激.

zoe*_*ver 3

您应该仍然可以使用MPVolumeView. 只需使用以下内容:

    let volumeView = MPVolumeView()
    self.view.addSubview(volumeView)
Run Code Online (Sandbox Code Playgroud)

或者如果您只想显示菜单,您可以使用:

    let volumeView = MPVolumeView(frame: CGRect(x: -100, y: 0, width: 0, height: 0))
    self.addSubview(volumeView)
    for view: UIView in volumeView.subviews {
        if let button = view as? UIButton {
            button.sendActions(for: .touchUpInside)
            volumeView.removeFromSuperview()
            break
        }
    }
Run Code Online (Sandbox Code Playgroud)

这会将其置于当前视图之外,然后触发显示空中播放菜单的操作。