2017-02-09 9 views
0

私はインターネットからダウンロードしたビデオをアプリで持っていて、アプリで再生しています。ユーザーがアプリを終了したら、ビデオをバックグラウンドで再生する必要があります。タスク私は、サイトのスタックオーバーフローに関するいくつかの質問をしてみてくださいが、私の問題を解決することはできませんし、私はそれを作るためのコードを、以下の論文を追加してもswiftを使用してバックグラウンドでビデオを再生する問題3

override func viewDidAppear(_ animated: Bool) { 
     super.viewDidAppear(animated) 
     UIApplication.shared.beginReceivingRemoteControlEvents() 
     self.becomeFirstResponder() 
    } 

    override func viewWillDisappear(_ animated: Bool) { 
     super.viewWillDisappear(animated) 

     UIApplication.shared.endReceivingRemoteControlEvents() 
     self.resignFirstResponder() 
    } 

    override func remoteControlReceived(with event: UIEvent?) { 
     if event?.subtype == UIEventSubtype.remoteControlPlay { 
      print("Play") 
     } 
    } 

を動作していないとも私はAppdelegate

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    // Override point for customization after application launch. 

    let getAvAudioSession = AVAudioSession.sharedInstance() 
    do { 
      try getAvAudioSession.setActive(true) 
      try getAvAudioSession.setCategory(AVAudioSessionCategoryPlayback) 
    }catch{ 
     print(error) 
    } 
    return true 
} 
に次のコードを追加します

と私はまたcapabilからアプリでバックグラウンドモードを有効にしますまた

を働いていないitiesは私をたくさん

答えて

0

はMediaPlayerのを輸入に見て

おかげでそれを修正することができますしてください。以下のようなもの。

import MediaPlayer 

let mpic = MPRemoteCommandCenter.shared() 

func setupNowPlayingInfoCenter() { 
    UIApplication.shared.beginReceivingRemoteControlEvents() 
    mpic.playCommand.addTarget {event in 
     print("playCommand") 
     self.player?.play() 
     return .success 
    } 
    mpic.pauseCommand.addTarget {event in 
     print("pauseCommand") 
     if self.player?.rate != 0 { 
      self.player?.pause() 
     } 
     return .success 
    } 
    mpic.nextTrackCommand.addTarget {event in 
     print("nextTrackCommand") 
     return .success 
    } 
    mpic.previousTrackCommand.addTarget {event in 
     print("previousTrackCommand") 
     return .success 
    } 

} 

本当にあなたのオーディオセッションをAppdelegateで開始したいのか分かりませんが、それはあなた次第です。基本的には、プレイを開始するときにsetupNowPlayingInfoCenter()を呼び出します。

+0

これは正しくありません。 'setupNowPlayingInfoCenter()'を 'viewDidLoad'メソッドに起動する必要があります。何かを再生するたびに呼び出さないか、' MPRemoteCommandCenter' –

関連する問題