2017-02-09 1 views
0

저는 인터넷에서 다운로드 한 비디오를 가지고 있으며 내 앱을 통해 재생합니다. 사용자가 앱을 종료 할 때 배경에서 비디오를 재생해야합니다. 어떻게 작동합니까? 작업 전 현장 스택 오버 플로우에 대한 몇 가지 질문을하려고하지만 내 문제를 해결할 수없고 나는 그것을 만들기 위해 코드를 다음 논문을 추가하고 또한스위프트를 사용하여 백그라운드에서 재생 비디오와 함께 문제가 발생했습니다.

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에서 앱의 백그라운드 모드를 사용할 수도 있습니다. 시달 또한

많이에게 MediaPlayer를 가져 오기에

답변

0

봐 그것을 저를 해결

감사 할 수 있습니다하시기 바랍니다 작동하지 않습니다. 아래처럼.

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 
    } 

} 

정말로 Appelegate에서 오디오 세션을 시작할지 모르겠지만 그게 당신에게 달렸어. 연주를 시작하면 기본적으로 setupNowPlayingInfoCenter()를 호출하십시오.

+0

이것은 올바르지 않습니다 :'setupNowPlayingInfoCenter()'가'viewDidLoad' 메소드로 시작되어야합니다. 당신이 무언가를 시작하거나 MPRemoteCommandCenter를 닫을 때마다 호출해서는 안됩니다. –