AVPlayerItemDidPlayToEndTime 通知不适用于 iOS 11

AVPlayerItemDidPlayToEndTime notification not working on iOS 11

在以前的版本中,AVPlayer 上有完成按钮,当添加以下通知时,它起作用了:

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)

documentation表示AVPlayerItemDidPlayToEndTime

Posted when the item has played to its end time

考虑到通知的名称,这很有意义。

相反,在项目播放完毕之前点击 AVPlayerViewController 的完成(或 X)按钮意味着它不会播放到结束时间,并且因此不会发布通知。

在 iOS 9.3 上对此进行测试表明行为与在 iOS 11.

上的行为相同

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