【发布时间】:2015-11-24 07:44:38
【问题描述】:
我正在创建播放 youtube 视频的应用程序。
在这个应用中,
用户可以播放 youtube 视频,当用户进入后台或锁定手机时会播放视频声音
我使用UIApplicationDidEnterBackgroundNotification 播放背景视频,我没有删除UIApplicationDidEnterBackgroundNotificationin viewDidDisappear,因为我想在整个应用程序中播放视频声音
这里是代码
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIApplicationDidEnterBackgroundNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "playBgVideo", name: UIApplicationDidEnterBackgroundNotification, object: nil)
}
func playBgVideo()
{
bgTimer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: "hello", userInfo: nil, repeats: true)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "playFgVideo", name: UIApplicationWillEnterForegroundNotification, object: nil)
}
func hello()
{
player?.play()
}
func playFgVideo()
{
bgTimer?.invalidate()
NSNotificationCenter.defaultCenter().removeObserver(self, name:UIApplicationWillEnterForegroundNotification, object: nil)
}
当我第一次播放视频时,后台播放工作完美,因为UIApplicationDidEnterBackgroundNotification 调用了一次,但我播放第二个视频然后后台播放不起作用,因为UIApplicationDidEnterBackgroundNotification 调用了两次
给我建议我该如何解决这个问题?
谢谢
【问题讨论】:
-
定时器是干什么用的?你添加了多少次观察者?
-
可能是您在 viewDidLoad 中添加和删除通知。如果您的视图没有解除分配,则 viewDidLoad 永远不会再次触发。尝试在 viewWillAppear 中添加通知并删除 viewWillDisappear。
-
我无法删除 viewWillDisappear 中的通知,因为它是整个应用程序所必需的
-
@Wain 我只在 viewDidLoad 中添加了一次观察者
-
@John 如果您解决了问题,您介意分享您的解决方案吗?