2016-05-13 10 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

あなたはそうのようなあなたのaPlayerの再生や一時停止するNSNotificationCenter経由で通知をforegrounding /バックグラウンド化のために登録することができるはずです。

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

UIApplicationWillEnterForegroundNotificationを含む利用可能ないくつかのUIApplication通知名があります。必要に応じて多くの通知を活用して、動画プレーヤーのクラスでアプリ状態について何が起こっているのかを知ることができます。

iOS 8以下をサポートしている場合は、ビューコントローラに追加したNSNotificationからオブザーバーとしてプレーヤークラスも削除してください。

+0

ありがとうございました!それはうまくいった! –

+0

甘い!うれしかった!それがあなたのために働いているか、それを上書きしていれば、答えを受け入れることはできますか?ありがとうございます –

+0

申し訳ありません。チェックしましたが、残念ながら投票に足るポイントがありません。ありがとう、私は一度投票します! –

0

はい、すべてのアプリケーション固有の動作は、お客様のアプリケーションの無効なプロトコル内で発生します。 appdelegateのapplicationDidEnterBackground機能にポーズコードを入力し、履歴コードをapplicationWillEnterForegroundに入れてください。

I would check out Apple's docs on the AppDelegate protocol特に、これらの2つの機能は、アプリが非アクティブになる前にタスクを完了するための時間について考慮する必要があります(ただし、一時停止して再開してもAVPlayerあなたは大丈夫です)。

+0

ありがとうございました! –

関連する問題