2016-05-13 123 views
2

我有一個背景視頻,當我開始我的應用程序播放。我想要視頻暫停並恢復它停止的位置,如果我碰巧碰到了主屏幕按鈕。這裏是我的代碼:從前景導航到背景時,如何暫停播放背景視頻?

class ViewController: UIViewController 
{ 
    let moviePlayerController = AVPlayerViewController() 
    var aPlayer = AVPlayer() 
    func playBackgroundMovie() 
    { 
     if let url = NSBundle.mainBundle().URLForResource("IMG_0489", withExtension: "m4v") 
     { 
      aPlayer = AVPlayer(URL: url) 
     } 
     moviePlayerController.player = aPlayer 
     moviePlayerController.view.frame = view.frame 
     moviePlayerController.view.sizeToFit() 
     moviePlayerController.videoGravity = AVLayerVideoGravityResizeAspect 
     moviePlayerController.showsPlaybackControls = false 
     aPlayer.play() 
     view.insertSubview(moviePlayerController.view, atIndex: 0) 
    } 

    func didPlayToEndTime() 
    { 
     aPlayer.seekToTime(CMTimeMakeWithSeconds(0, 1)) 
     aPlayer.play() 
    } 


    override func viewDidLoad() 
    { 
     // Do any additional setup after loading the view, typically from a nib. 
     super.viewDidLoad() 
     playBackgroundMovie() 
     NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.didPlayToEndTime), name: AVPlayerItemDidPlayToEndTimeNotification, object: nil) 
    } 

我是否必須在應用程序委託中執行一些操作?我查看了以前的視頻,但我認爲其中一些正在使用過時的swift版本。或者對我來說有點太混亂。

回答

2

您應該能夠爲backgrounding註冊/通過NSNotificationCenter前景化通知播放或暫停aPlayer像這樣:

let notificationCenter = NSNotificationCenter.defaultCenter() 
    notificationCenter.addObserver(self, selector: #selector(pauseVideoForBackgrounding), name: UIApplicationDidEnterBackgroundNotification, object: nil) 

有包括UIApplicationWillEnterForegroundNotification幾個可用的UIApplication的通知名字。您可以根據需要利用盡可能多的通知,讓您的視頻播放器課程知道應用狀態正在發生什麼。

如果您支持iOS 8或更低版本,請確保從添加到視圖控制器的任何NSNotifications中以觀察者身份移除播放器類。

+0

非常感謝!工作! –

+0

甜!很高興工作!你介意接受答案,如果它爲你工作或upvoting它?謝謝 –

+0

對不起,新的這一點。檢查,但我沒有足夠的積分投票不幸的。謝謝,我會投票,一旦我做! –

0

是的,所有應用程序特定的操作都發生在您的appdelegate協議中。請將您的暫停代碼放入您的appdelegate的applicationDidEnterBackground函數中,並將您的簡歷代碼放入applicationWillEnterForeground

I would check out Apple's docs on the AppDelegate protocol,尤其是這兩個函數,因爲在您的應用程序變爲不活動狀態之前需要花費更多的時間來完成任務(儘管如果您只是暫停和恢復一個AVPlayer你應該沒問題)。

+0

謝謝你! –