是否无法使用UIWebView自动播放嵌入的YouTube视频?

时间:2016-02-19 21:50:07

标签: ios swift uiwebview

我在尝试自动播放我的UIWebView时遇到问题。

是的,我知道已经有很多问题了。

Fist off,这是我的简单代码:

override func viewDidLoad()
{
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    let youtubePlayer:UIWebView = UIWebView(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height))

    youtubePlayer.loadRequest(NSURLRequest(URL: NSURL(string: "https://www.youtube.com/embed/EzNinU0g-Q0")!) )

    self.view.addSubview(youtubePlayer)
}

现在我发现了:

  1. How to autoplay a YouTube video in a UIWebView
  2. Youtube video autoplay inside UIWebview
  3. How to get YouTube autoplay to work in UIWebView?
  4. 我按照以下代码建议:

    youtubePlayer.mediaPlaybackRequiresUserAction = false
    youtubePlayer.allowsInlineMediaPlayback = true
    

    没有做任何事。

    1. autoplay on video in UIWebview,iOS
    2. 此解决方案有效,但不适用于我使用的嵌入式视频。

      因此,是否无法使用UIWebView进行自动播放?

      这些问题是在几年前发布的,所以我不确定事情是如何变化的。

      有人可以建议替代方案吗?由于我设置了UITableView,当用户选择一个单元格(视频)时,它会显示视频的UIWebView。

      但是,我希望,如果可能,视频会在用户选择视频时立即开始播放,而不必再次按播放进行播放。

      我有类似TubiMusic和Tubex等应用程序的布局设计,但这些应用程序能够自动播放视频,而我却无法弄清楚如何做同样的事情。

      任何帮助将不胜感激。感谢

2 个答案:

答案 0 :(得分:4)

以下是How to autoplay a YouTube video in a UIWebView评价最高的obj-c答案的Swift-ified版本。

  

显然问题出在nil base url上,当我将它更改为resourceURL时,自动播放工作正常。

以下是代码:

var youTubeVideoHTML: String = "<!DOCTYPE html><html><head><style>body{margin:0px 0px 0px 0px;}</style></head> <body> <div id=\"player\"></div> <script> var tag = document.createElement('script'); tag.src = \"http://www.youtube.com/player_api\"; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); var player; function onYouTubePlayerAPIReady() { player = new YT.Player('player', { width:'%0.0f', height:'%0.0f', videoId:'%@', events: { 'onReady': onPlayerReady, } }); } function onPlayerReady(event) { event.target.playVideo(); } </script> </body> </html>"

func playVideoWithId(videoId: String) {
var html: String = String(format: youTubeVideoHTML, self.frame.size.width, self.frame.size.height, videoId)

}

答案 1 :(得分:2)

自动播放参数在网络视图中不起作用。相反,你必须使用JS apis来确定播放器的就绪状态,然后发送播放命令。

您可以使用此窗格 https://github.com/gilesvangruisen/Swift-YouTube-Player

或者您可以使用谷歌提供的代码

https://developers.google.com/youtube/v3/guides/ios_youtube_helper