IOS 14 AVPlayer воспроизводится на симуляторе, но не на реальном устройстве

#ios #swift #avfoundation #avkit

#iOS #swift #avfoundation #avkit

Вопрос:

У меня есть заставка в виде короткого видео mov для моего приложения, и я использую AVPlayer (код ниже) для этого. Он перестал работать с физическим устройством IOS 14, в то время как на симуляторе он работает нормально. Не могли бы вы помочь с этим?

 import UIKit
import AVKit
import AVFoundation

class PlayerVC: UIViewController, AVAudioPlayerDelegate {
  
  lazy var player: AVPlayer  = {
    let fileName = "test"
    let path = Bundle.main.path(forResource: fileName, ofType: "mov")!
    let videoURL = URL(fileURLWithPath: path)
    let player = AVPlayer(url: videoURL)
    return player
  }()
  
  override func viewDidLoad() {
    super.viewDidLoad()
    self.view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(viewTapped)))
  }
  
  override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    let playerLayer = AVPlayerLayer(player: player)
    playerLayer.shouldRasterize = true
    playerLayer.frame = self.view.bounds
    
    self.view.layer.addSublayer(playerLayer)
    player.play()
    NotificationCenter.default.addObserver(self, selector: #selector(self.playerDidFinishPlaying(sender:)), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: player.currentItem)
  }
  
  @objc func playerDidFinishPlaying(sender: NSNotification) {
    loadRootVC()
  }

  private func loadRootVC() {
    dismiss(animated: false, completion: nil)
    self.onVideoFinished();
  }
  
  @objc func viewTapped() {
    loadRootVC()
  }
  
  deinit {
    NotificationCenter.default.removeObserver(self)
  }
}
  

Комментарии:

1. Добро пожаловать! Вы проверили плеер status и error после того, как позвонили player.play() ?