我在尝试自动播放我的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)
}
现在我发现了:
我按照以下代码建议:
youtubePlayer.mediaPlaybackRequiresUserAction = false
youtubePlayer.allowsInlineMediaPlayback = true
没有做任何事。
此解决方案有效,但不适用于我使用的嵌入式视频。
因此,是否无法使用UIWebView进行自动播放?
这些问题是在几年前发布的,所以我不确定事情是如何变化的。
有人可以建议替代方案吗?由于我设置了UITableView
,当用户选择一个单元格(视频)时,它会显示视频的UIWebView。
但是,我希望,如果可能,视频会在用户选择视频时立即开始播放,而不必再次按播放进行播放。
我有类似TubiMusic和Tubex等应用程序的布局设计,但这些应用程序能够自动播放视频,而我却无法弄清楚如何做同样的事情。
任何帮助将不胜感激。感谢
答案 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