在iOS9中观察AVPlayerItem上的值

时间:2015-06-22 15:52:11

标签: avfoundation ios9 avplayeritem

我有一个使用AVPlayer从远程网址播放AVPlayerItem(视频)的应用。在iOS 6-8中,我一直在观察AVPlayerItem's的{​​{1}}值,以便在loadedTimeRanges准备播放时播放通知我。这也适用于观察项目的playerItem的值,我相信。

更新到iOS 9测试版后,我发现的duration上的值都没有进入AVPlayerItem - 方法。就好像我根本没有观察它们一样。我仍然会收到observeValueForKeyPath上的值的通知,但AVPlayer上没有。这可能是一个错误,还是这里的环境发生了变化?我找不到任何关于这个......

为了澄清,在iOS 6-8中,只要有任何加载的时间范围,视频就会开始播放。在iOS9中,我在加载任何时间范围时都不会收到通知。

更新

在观察AVPlayerItem的值status后,我现已确认该项的状态已更改为AVPlayerItem。通过在失败后退出项目的Failed,我得到了这个:

NSError

1 个答案:

答案 0 :(得分:5)

我今天遇到了同样的问题。就我而言,由于iOS 9中新的App Transport Security功能,加载视频失败了。

您可以像这样在info.plist中添加每个域的例外:

unchange state

如果您需要从任意域加载视频,可以完全禁用App Transport Security,但不建议这样做。

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
    <key>yourserver.com</key>
    <dict>
      <!--Include to allow subdomains-->
      <key>NSIncludesSubdomains</key>
      <true/>
      <!--Include to allow HTTP requests-->
      <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
      <true/>
      <!--Include to specify minimum TLS version-->
      <key>NSTemporaryExceptionMinimumTLSVersion</key>
      <string>TLSv1.1</string>
    </dict>
  </dict>
</dict>