AVPlayerItemDidPlayToEndTime通知无法在iOS 11上运行

时间:2017-10-23 05:37:08

标签: ios swift avplayer ios11 avplayerviewcontroller

在以前的版本中,AVPlayer上有Done按钮,当添加以下通知时,它有效:

NotificationCenter.default.addObserver(self, selector: #selector(CourseDetailViewController.moviePlayBackDidFinish(notification:)), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: nil)  

现在突然,在 iOS 11 中,首先没有完成按钮(它被十字按钮取代),其次,在点击十字按钮时,NSNotification.Name.AVPlayerItemDidPlayToEndTime没有被触发。
这就是我在AVPlayerViewController

的帮助下呈现玩家的方式
player = AVPlayer(url: url! as URL)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
self.present(playerViewController, animated: true)

1 个答案:

答案 0 :(得分:3)

documentation表示AVPlayerItemDidPlayToEndTime

  

当项目播放到结束时间时发布

根据通知的名称有意义。

相反,在项目完成播放之前点击AVPlayerViewController的完成(或X)按钮意味着 将不会播放到结束时间,因此通知赢了张贴。

在iOS 9.3上进行测试显示其行为与iOS 11上的行为相同。

您的应用程序或iOS 11与您的应用程序的交互中必须更改其他内容,这会导致您正在观察的行为发生更改。在没有看到您的代码的情况下,其他任何内容都会被推测,但根据您的描述,AVPlayerItemDidPlayToEndTime的行为与预期一致。