【问题标题】:iOS How to use YouTube iFrame API Events inside WKWebViewiOS 如何在 WKWebView 中使用 YouTube iFrame API 事件
【发布时间】:2018-07-05 19:15:34
【问题描述】:

我想自动播放 YouTube 视频或通过控制台记录视频的当前时间,但似乎没有任何效果。我需要知道我在哪里放置这个事件以及如何对它们进行回调?

override func viewDidLoad() {
    super.viewDidLoad()

    self.ytPlayer.delegate = self
    self.ytPlayer.load(withVideoId: "0UjHDYppsjU", playerVars: playerVars)
}

func playerViewDidBecomeReady(_ playerView: WKYTPlayerView) {
    playerView.playVideo();
}

func playerView(_ playerView: WKYTPlayerView, didPlayTime playTime: Float, time d: TimeInterval) {
    print("time \(playTime)")
    self.progressBar.progress = self.progressBar.progress + (playTime)
}

func getDuration(_ playerView: WKYTPlayerView, duration d: TimeInterval) {
    print("duration \(d)")
}

【问题讨论】:

  • 为什么说WKWebView?
  • 因为视频是在 WKWebView @AndreaMugnaini 中加载的
  • 从您的代码看来,您使用的是YTPlayerView(安装在UIWebView 上),我错了吗?
  • 是的,但它安装在 WKWebView 内

标签: ios swift youtube


【解决方案1】:

如果你想启用自动播放,你可以实现委托WKYTPlayerViewDelegate,尤其是函数playerViewDidBecomeReady。一个简单的用法示例可能是:

import UIKit

class ViewController: UIViewController, WKYTPlayerViewDelegate {
    @IBOutlet weak var ytPlayer: WKYTPlayerView!

    override func viewDidLoad() {
        super.viewDidLoad()

        var playerVars: [String:Any] = [
            "autoplay": 1,
            "playsinline" : 1,
            "enablejsapi": 1,
            "wmode": "transparent",
            "controls": 0,
            "showinfo": 0,
            "rel": 0,
            "modestbranding": 1,
            "iv_load_policy": 3 //annotations
        ]
        self.ytPlayer.delegate = self
        self.ytPlayer.load(withVideoId: "DfWI-yV7TUY", playerVars: playerVars)
    }

    func playerViewDidBecomeReady(_ playerView: WKYTPlayerView) {
        playerView.playVideo()

        playerView.getDuration { (timeInterval, error) in
            print("duration: \(timeInterval)")
        }
    }

    func playerView(_ playerView: WKYTPlayerView, didPlayTime playTime: Float) {
        print("time \(playTime)")
    }
}

【讨论】:

  • 我在这里收到此错误:`self.ytPlayer.delegate = self` 线程 1:致命错误:在展开可选值 self.ytPlayer = WKYTPlayerView(frame: self.view.frame) self.ytPlayer.delegate = self 时意外发现 nil
  • 好的,你在用这个库吗:github.com/hmhv/YoutubePlayer-in-WKWebView ?
  • 没错!我用那个@Andrea
  • 找到原因,等一下,我给你解决方案
  • 该死的人,你太棒了!非常感谢。但是你怎么做呢?我多年来一直在 JS 中使用 iFrame API,但我想知道如何将这些函数转换为 SWIFT,我的意思是如何添加参数和东西?
猜你喜欢
  • 2020-10-20
  • 1970-01-01
  • 2016-09-16
  • 2014-08-28
  • 1970-01-01
  • 2015-12-25
  • 2017-04-14
  • 2015-08-21
  • 2021-04-07
相关资源
最近更新 更多