我的iOS应用程序中有一个简单的页面,其中包含一个UIWebView
。UIWebView
应该加载Youtube视频。问题是当我转到页面时,webview加载了正确的视频预览,但是当我单击播放按钮时,没有任何反应。我看了一堆关于这个主题的教程和YouTube视频,看着它们,它并没有看到我做错了什么。我想知道是否需要对 plist 生活设置一些权限,即使我在任何地方都没有找到任何参考。 我的应用程序在 Xcode 7.3 上,swift 2。请帮忙。这是我的视图控制器的代码:
import UIKit
class watchVideoVC: UIViewController, UIWebViewDelegate {
@IBOutlet weak var myVid: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
let myURL = "https://youtube.com/embed/tVjv8I0BlU4"
self.myVid.allowsInlineMediaPlayback = true
let fbor = "0"
let height = myVid.frame.height
let width = myVid.frame.width
let code:NSString = "<iframe src=(myURL) width=(width) height=(height) frameborder=(fbor) allowfullscreen></iframe>"
self.myVid.loadHTMLString(code as String, baseURL: nil)
}
}
有时视频无法播放,因为许多视频仅限于在第三方应用程序中播放。 这些视频只能在原生Youtube上播放。 所以..
将以下代码添加到您的 swift 文件中。它将提示本机错误消息
player.delegate = self
func playerViewDidBecomeReady(_ playerView: YTPlayerView)
{
playerView.playVideo()
}
如果您不介意显示实际的YouTube视频页面(我的意思是不是自己的视频嵌入),则可以在Web视图中加载youtube URL:
self.myVid.loadRequest(NSURLRequest(URL: NSURL(string:myUrl)!))
除此之外,我认为您可以尝试一下Youtube IFrame API,它使用一个小的javascript来渲染iframe并相应地设置操作(您可能需要将示例中给出的整个HTML添加到Web视图中才能使其工作)。
https://developers.google.com/youtube/iframe_api_reference
最后,如果您希望视频自动启动,您可能会在下面添加allowsInlineMediaPlayback
:
self.myVid.mediaPlaybackRequiresUserAction = false
因此,我从另一个论坛找到了帮助,并被引导到"youtube-ios-player"。它的 gihub 链接是 https://github.com/youtube/youtube-ios-player-helper github链接有一些过时的指令,因为它使用了对Objective C而不是Swift的引用。但我也从 youtube 视频中得到了帮助,解释了如何在 Swift 2 中使用"youtube-ios-player-helper"。视频的链接是:https://www.youtube.com/watch?v=WAAZJm6H9Ms 我没有使用CocoaPods,而是使用手动复制文件的方法。如何做到这一点的细节在上面提到的youtube视频和github链接中进行了解释。 使用这个"youtube-ios-player-helper",我的嵌入式youtube视频加载并完美播放。