AVPlayer автоматическое воспроизведение при входе на передний план с фона с помощью RxSwift - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть видео и воспроизведение в ViewController.
Но когда я вхожу в фоновый режим, а затем возвращаюсь на передний план, видео иногда приостанавливается.
Есть идеи, позволяющие коду добавить уведомление, чтобы узнать пользователя на переднем плане исделать автоматическое воспроизведение видео.
Спасибо.

extension UIViewController: AVPlayerViewControllerDelegate {

private func playVideo(url: URL, completeHandler: @escaping () -> Void) -> Void {
    let player = AVPlayer(url: url)

    let vc = AVPlayerViewController.init()
    vc.videoGravity = "AVLayerVideoGravityResizeAspectFill"
    vc.showsPlaybackControls = false
    vc.player = player

    // add child view controller
    self.view.addSubview(vc.view)
    self.addChildViewController(vc)
    vc.didMove(toParentViewController: self)
    vc.view.backgroundColor = UIColor.clear

    // constraints
    vc.view.snp.makeConstraints { (make) in
        make.top.equalToSuperview()
        make.bottom.equalToSuperview()
        make.left.equalToSuperview()
        make.right.equalToSuperview()
    }
    // end play
    _ = NotificationCenter.default.rx
    .notification(NSNotification.Name.AVPlayerItemDidPlayToEndTime)
    .takeUntil(self.rx.deallocated)
        .subscribe(onNext: { [weak self] _ in
            for vc in self?.childViewControllers ?? [] {
                if vc is AVPlayerViewController {
                    vc.view.removeFromSuperview()
                    vc.removeFromParentViewController()
                }
            }
            completeHandler()
        })

    vc.player?.play()

}
}

1 Ответ

0 голосов
/ 23 февраля 2019

Ну, у вас есть обратные вызовы именно для этой цели в UIApplicatonDelegate - https://developer.apple.com/documentation/uikit/uiapplicationdelegate

  • applicationDidEnterBackground(_:)
  • func applicationWillEnterForeground(UIApplication)

Таким образом, вам придется приостановить / возобновить видео из этих методов обратного вызова.

...