// // GalleryPlayerViewController.swift // Tusker // // Created by Shadowfacts on 6/21/20. // Copyright © 2020 Shadowfacts. All rights reserved. // import UIKit import AVKit import Pachyderm class GalleryPlayerViewController: UIViewController { let playerVC = AVPlayerViewController() var attachment: Attachment! private var isFirstAppearance = true override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .black playerVC.allowsPictureInPicturePlayback = true playerVC.view.translatesAutoresizingMaskIntoConstraints = false addChild(playerVC) playerVC.didMove(toParent: self) view.addSubview(playerVC.view) NSLayoutConstraint.activate([ playerVC.view.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor), playerVC.view.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor), playerVC.view.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor), playerVC.view.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor), ]) } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) // starting while audio is already playing from another app often takes nearly a second, // so do it on a background thread as to not block the UI DispatchQueue.global(qos: .userInitiated).async { AudioSessionHelper.enable() AudioSessionHelper.setVideoPlayback() DispatchQueue.main.async { if self.isFirstAppearance { self.isFirstAppearance = false self.playerVC.player?.play() } } } } override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) // starting often takes around half a second, // so do it on a background thread as to not block the UI DispatchQueue.global(qos: .userInitiated).async { AudioSessionHelper.setDefault() AudioSessionHelper.disable() } } }