2015-11-23 16 views
7

Tôi đang phát video từ url bằng AVPlayer. AVPlayerItemDidPlayToEndTimeNotification không kích hoạt. Tôi đã đặt các điểm ngắt để kiểm tra. Dưới đây là đoạn mã của tôi: -AVPlayerItemDidPlayToEndTimeNotification không kích hoạt

@IBAction func playButtonClicked(sender: UIButton) { 
    let url:NSURL = NSURL(string: self.currentSelectedContent.link)! 
    moviePlayer = AVPlayer(URL: url) 
    playerViewController = AVPlayerViewController() 
    playerViewController.player = moviePlayer 

    self.presentViewController(playerViewController, animated: true) { 
     NSNotificationCenter.defaultCenter().addObserver(self, selector: "moviePlayBackFinished", name: AVPlayerItemDidPlayToEndTimeNotification, object: self.moviePlayer) 
     self.playerViewController.player?.play() 
    } 

} 

func moviePlayBackFinished() { 
    self.playerViewController.dismissViewControllerAnimated(true, completion: nil) 
} 

Trả lời

5

các actionAtItemEnd tài sản của AVPlayer là KVO compliant:

moviePlayer.addObserver(self, forKeyPath: "actionAtItemEnd", options: [], context: nil) 


override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) { 
    if keyPath == "actionAtItemEnd"{ 
     // 
     print("FINISH") 
    } 
} 

https://developer.apple.com/documentation/avfoundation/avplayer/1387376-actionatitemend

https://developer.apple.com/documentation/avfoundation/avplayeractionatitemend

14

Theo các tài liệu, đối tượng quan sát phải cá thể AVPlayerItem, không phải là bản thân AVPlayer. Hãy thử thay đổi self.moviePlayer thành self.moviePlayer.currentItem.

+0

nhờ này làm việc cho tôi – smoothumut

+0

Cuối cùng một câu trả lời đúng, điều này một lần khó khăn để tìm thấy! Nhiều thanx! – JOM

3

này làm việc cho tôi:

NotificationCenter.default.addObserver(self, 
selector:#selector(NativeVideoPlayer.didEndPlayback), 
name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object:nil) 
Các vấn đề liên quan