在iOS8上(重新)缓冲时未激发Youtube didChangeToState
我想检测在使用YouTube的iOS库(构建在iFrame之上)播放YouTube视频时,何时发生拒绝(即视频开始播放时发生缓冲)。我已经按照说明()说明了如何配置和启动视频。在运行iOS 9的iPhone上,一切正常,但在运行iOS 8的iPhone上运行相同的代码时,方法didChangeToState的状态为YTPlayerState。从未调用缓冲(在调用YTPlayerState.Playing之后),尽管视频有时明显会被拒绝 有一个报告的问题与iFrame库直接在UIWebView中使用的行为大致相同:在iOS8上(重新)缓冲时未激发Youtube didChangeToState,ios,iframe,youtube-api,Ios,Iframe,Youtube Api,我想检测在使用YouTube的iOS库(构建在iFrame之上)播放YouTube视频时,何时发生拒绝(即视频开始播放时发生缓冲)。我已经按照说明()说明了如何配置和启动视频。在运行iOS 9的iPhone上,一切正常,但在运行iOS 8的iPhone上运行相同的代码时,方法didChangeToState的状态为YTPlayerState。从未调用缓冲(在调用YTPlayerState.Playing之后),尽管视频有时明显会被拒绝 有一个报告的问题与iFrame库直接在UIWebView中使
我猜我的问题和这个有关 有没有办法通过YouTube的iOS库检测iOS 8上的拒绝? 我使用以下代码来检测拒绝:
class ViewController: UIViewController {
@IBOutlet weak var playerView: YTPlayerView!
override func viewDidLoad() {
super.viewDidLoad()
print("View did load")
playerView.delegate = self
let playerVars: [NSObject: AnyObject] = ["playsinline":1] // Plays the video in the UIView instead of fullscreen. To programmatically control playback.
playerView.loadWithVideoId("M7lc1UVf-VE", playerVars: playerVars)
}
}
extension ViewController: YTPlayerViewDelegate {
// MARK: YTPlayerViewDelegate
func playerView(playerView: YTPlayerView!, didChangeToState state: YTPlayerState) {
switch state {
case .Buffering:
print("Buffering")
break
case .Ended:
print("Ended")
break
case .Paused:
print("Paused")
break
case .Playing:
print("Playing")
break
case .Queued:
print("Queued")
break
case .Unknown:
print("Unknown")
break
case .Unstarted:
print("Unstarted")
break
}
}
func playerView(playerView: YTPlayerView!, receivedError error: YTPlayerError) {
print("Error: " + "\(error)")
}
func playerViewDidBecomeReady(playerView: YTPlayerView!) {
print("Player did become ready")
self.playerView!.playVideo()
}
}
在低带宽的网络上,我从配备iOS 9的iPhone上获得以下输出(以斜体显示):视图未加载
玩家确实准备好了
缓冲
播放
缓冲
播放
.
.
.
缓冲
播放
结束
另一方面,在iOS 8上,输出仅(与带宽无关):
视图未加载
玩家确实准备好了
缓冲
播放
结束您应该在YTPlayerView的官方GitHub回购协议上打开一个问题:谢谢@JAL!已按照您的建议提交一份已签发的文件: