使用YouTube v3 API和youtube-ios-player-helper的iOS应用无法自动播放视频

时间:2016-09-22 14:36:56

标签: ios swift youtube youtube-api ytplayerview

我在使用Google / YouTube提供的youtube-ios-player-helper广告连播自动播放视频时出现问题。这是我的应用程序的相关部分(iOS 10,Swift 3):

  • 一个ChannelVideosViewController,它将视频缩略图显示为带有UITapGestureRecognizer的UIViews,后者又转换为我的PlayerViewController并从API调用中传递videoId
  • 一个PlayerViewController,如下所示:

    var youtubePlayerView = YTPlayerView() // player for videos
    var youtubeVideoID = String() // videoId from API passed by ChannelVideosViewController
    
    override func viewDidLoad() {
    // ... skipping UI stuff
    
    view.addSubview(youtubePlayerView)
    youtubePlayerView.load(withVideoId: youtubeVideoID, playerVars: ["autoplay":1,"modestbranding":1,"showinfo":0,"rel":0])
    }
    

使用上面的代码,当我按下"大红色按钮"帮助程序库成功加载视频并全屏播放它们。但我希望在我进入视图后直接自动播放视频。有没有办法做到这一点?

    来自YouTube docs
  • "autoplay":1似乎没有为iOS剪掉它。
  • youtubePlayerView.playVideo()没有做任何事情

2 个答案:

答案 0 :(得分:8)

符合YTPlayerViewDelegate协议,如下所示:

self.youtubePlayer.delegate = self

现在使用此委托方法在播放器准备就绪时自动播放视频:

extension ViewController: YTPlayerViewDelegate {
    func playerViewDidBecomeReady(_ playerView: YTPlayerView) {
        self.youtubePlayer.playVideo()
    }
}

在我的情况下它完美无缺。

答案 1 :(得分:1)

根据此github,自动驾驶仪无法与iOS播放器配合使用,因为解决方法可以试试这个:

(void)playerViewDidBecomeReady:(YTPlayerView *)playerView{ [[NSNotificationCenter defaultCenter] postNotificationName:@"Playback started" object:self]; [self.playerView playVideo]; }

有关更多信息,请查看以下主题: