我以为我可以通过属性“rate”来检查AVPlayer的状态.
这就是我创建一个播放器实例的方法:
player = AVPlayer(URL: stream) // streaming from the internet player!.play()
稍后我会做这样的事情
println(player!.rate)
这是我发现的:
>在模拟器中,如果播放器没有运行,我得到“0.0”,如果它正在运行,我得到“1.0”.
>如果我启动播放器但中断互联网连接,它会将值从1更改为0.
>但是,在我的iPhone上,即使进入飞行模式,该属性仍保持值1?
您是否知道为什么会发生这种情况以及如何检查流情况呢?
到目前为止我已经尝试了一个观察者:
player!.addObserver(self,forKeyPath: "status",options: NSKeyValueObservingOptions.New,context: nil)
但即使是方法“observeValueForKeyPath”也不会在我的iPhone测试用例中被触发.
解决方法
查看
the Apple docs here
并滚动到“键值观察”部分.特别是那部分的#3.
并滚动到“键值观察”部分.特别是那部分的#3.
它帮助我实现了工作.我得到的代码如下所示:
//Global var player = AVPlayer() func setUpPlayer() { //... // Setting up your player code goes here self.player.addObserver(self,options: NSKeyValueObservingOptions(),context: nil) //... } // catch changes to status override func observeValueForKeyPath(keyPath: String?,ofObject object: AnyObject?,change: [String : AnyObject]?,context: UnsafeMutablePointer<Void>) { print("obsrved") }