iOS AVPlayer 播放完成检测:两种方法详解
当 iOS AVPlayer 播放完毕时,可以通过以下两种方式来检测:
- 使用 KVO 监听 'AVPlayerItem' 对象的 'status' 属性的变化。当 'status' 变为 'AVPlayerItemStatusReadyToPlay' 时,表示播放完成。
playerItem.addObserver(self, forKeyPath: "status", options: [.old, .new], context: nil)
在 'observeValue(forKeyPath:of:change:context:)' 方法中处理状态变化:
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == "status", let playerItem = object as? AVPlayerItem {
if playerItem.status == .readyToPlay {
// 播放完成
}
}
}
- 使用 'NotificationCenter' 监听 'AVPlayerItemDidPlayToEndTime' 通知,该通知在播放完成时发送。
NotificationCenter.default.addObserver(self, selector: #selector(playerDidFinishPlaying), name: .AVPlayerItemDidPlayToEndTime, object: nil)
在对应的方法中处理播放完成的逻辑:
@objc private func playerDidFinishPlaying(notification: Notification) {
// 播放完成
}
无论哪种方式,都需要先创建一个 'AVPlayerItem' 对象,并将其设置给 'AVPlayer' 对象进行播放。
原文地址: https://www.cveoy.top/t/topic/mLBE 著作权归作者所有。请勿转载和采集!