Youtube在设备上失败,适用于模拟器

时间:2016-03-19 07:20:25

标签: ios swift youtube

我正在使用以下代码显示youtube视频:

webViewVideo.hidden = false

webViewVideo.allowsInlineMediaPlayback = true
webViewVideo.mediaPlaybackRequiresUserAction = false

let youtubeIfarme = "<html><body><iframe src=\"http://www.youtube.com/embed/\(youtubeId)?playsinline=1\" width=\"\(CGRectGetWidth(loadedView.frame) - CGFloat(16))\" height=\"\(CGRectGetHeight(webViewVideo.frame))\" frameborder=\"0\" allowfullscreen></iframe></body></html>"

webViewVideo.loadHTMLString(youtubeIfarme, baseURL: NSBundle.mainBundle().bundleURL)

哪些代码在模拟器上运行得很好,但是在真实设备上它无法加载。我将以下定义为app transport security:

transport security

奇怪的是我下载了iOS Helper library,但结果是一样的。而且永远不会调用委托方法。在他们的github页面上,他们有很多未解决的问题,所以我想这不是我最好的选择。

任何帮助都将受到高度赞赏。

修改

我设法在模拟器上调试我的html页面在UIWebView中的显示方式(通过Safari Develop连接它):

<html><head></head><body><iframe src="http://www.youtube.com/embed/KIiUqfxFttM?playsinline=1" width="359.0" height="350.0" frameborder="0" allowfullscreen=""></iframe></body></html>

2 个答案:

答案 0 :(得分:0)

什么是您的模拟器和设备的操作系统版本? OS版本是否相同?可能不同的UIWebView可能会触发错误。

同时检查

Playing youtube using <iframe> fails on iPhone, but still works for iPad under iOS 6 (both work fine on iOS 5)

答案 1 :(得分:0)

我必须回答我自己的问题。问题是我曾经通过实现所需的委托来显示UITableViewHeader内的视频:

https://ideone.com/lUxnSs

viewForHeaderInSection

我只有一个部分所以只有当section == 0我不知道究竟是什么导致了这个问题时才返回值,但是可能多次调用该方法会导致这个问题。我所做的只是简单地在UIWebView内移动viewWillAppear的初始化并将其设置为tableViewHeaderView。所以我现在只设置一次,问题就消失了:

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)

    dispatch_once(&token) {
        self.initHeader()
    }
}