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
的行为符合预期。
在以前的版本中,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
的行为符合预期。