当 iOS AVPlayer 播放完毕时,可以通过以下两种方式来检测:

  1. 使用 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 {
            // 播放完成
        }
    }
}
  1. 使用 'NotificationCenter' 监听 'AVPlayerItemDidPlayToEndTime' 通知,该通知在播放完成时发送。
NotificationCenter.default.addObserver(self, selector: #selector(playerDidFinishPlaying), name: .AVPlayerItemDidPlayToEndTime, object: nil)

在对应的方法中处理播放完成的逻辑:

@objc private func playerDidFinishPlaying(notification: Notification) {
    // 播放完成
}

无论哪种方式,都需要先创建一个 'AVPlayerItem' 对象,并将其设置给 'AVPlayer' 对象进行播放。

iOS AVPlayer 播放完成检测:两种方法详解

原文地址: https://www.cveoy.top/t/topic/mLBE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录