在以前的版本中,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)
答案 0 :(得分:3)
documentation表示AVPlayerItemDidPlayToEndTime
是
当项目播放到结束时间时发布
根据通知的名称有意义。
相反,在项目完成播放之前点击AVPlayerViewController
的完成(或X)按钮意味着 将不会播放到结束时间,因此通知赢了张贴。
在iOS 9.3上进行测试显示其行为与iOS 11上的行为相同。
您的应用程序或iOS 11与您的应用程序的交互中必须更改其他内容,这会导致您正在观察的行为发生更改。在没有看到您的代码的情况下,其他任何内容都会被推测,但根据您的描述,AVPlayerItemDidPlayToEndTime
的行为与预期一致。