我在启动应用时播放了背景视频。如果我碰巧按下主页按钮,我希望视频暂停并从中断处继续。这是我的代码:
class ViewController: UIViewController
{
let moviePlayerController = AVPlayerViewController()
var aPlayer = AVPlayer()
func playBackgroundMovie()
{
if let url = NSBundle.mainBundle().URLForResource("IMG_0489", withExtension: "m4v")
{
aPlayer = AVPlayer(URL: url)
}
moviePlayerController.player = aPlayer
moviePlayerController.view.frame = view.frame
moviePlayerController.view.sizeToFit()
moviePlayerController.videoGravity = AVLayerVideoGravityResizeAspect
moviePlayerController.showsPlaybackControls = false
aPlayer.play()
view.insertSubview(moviePlayerController.view, atIndex: 0)
}
func didPlayToEndTime()
{
aPlayer.seekToTime(CMTimeMakeWithSeconds(0, 1))
aPlayer.play()
}
override func viewDidLoad()
{
// Do any additional setup after loading the view, typically from a nib.
super.viewDidLoad()
playBackgroundMovie()
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.didPlayToEndTime), name: AVPlayerItemDidPlayToEndTimeNotification, object: nil)
}
我是否必须在应用代理中执行某些操作?我看过以前的视频,但我认为其中一些是使用过时的swift版本。或者对我来说有点太困惑了。
答案 0 :(得分:2)
您应该可以通过NSNotificationCenter注册后台/前台通知来播放或暂停您的aPlayer,如下所示:
let notificationCenter = NSNotificationCenter.defaultCenter()
notificationCenter.addObserver(self, selector: #selector(pauseVideoForBackgrounding), name: UIApplicationDidEnterBackgroundNotification, object: nil)
有几个UIApplication通知名称,包括UIApplicationWillEnterForegroundNotification。您可以根据需要利用尽可能多的通知,让您的视频播放器课程了解应用状态发生的情况。
如果您支持iOS 8或更低版本,请务必从已添加到视图控制器的任何NSNotification中删除您的播放器类作为观察者。
答案 1 :(得分:0)
是的,所有特定于应用程序的操作都发生在您的appdelegate协议中。希望将暂停代码放在appdelegate的applicationDidEnterBackground
函数中,将简历代码放在applicationWillEnterForeground
中。
I would check out Apple's docs on the AppDelegate
protocol,尤其是这两项功能,因为在您的应用变为非活动状态之前,您需要考虑完成任务所需的时间(尽管如此)如果您只是暂停并恢复AVPlayer
,那么您应该没问题。