我的应用程序中有一些音乐在AVAudioSessionCategoryAmbient下播放.现在我的问题是,当Apple弹出一个像“登录iTunes Store”的弹出窗口时,它会暂停我的音乐,但不会恢复它.值得庆幸的是,它照顾了我的SKScene ……但不是音乐.是否有某种方法可以在警报解除时进行回调?
奇怪的是,我制作的其他UIAlertViews不会对应用程序执行此操作,所以我真的不知道是什么.
暂停场景和音乐的警报列表:
>登录itunes
>电池电量低
>确认购买
解决方法
我之前遇到过类似的问题(
Swift 1.2的开头).我通过观察SKScene的暂停状态解决了我的问题. SKScene有SKView类型的视图.
private var queueContext = 0
override func didMovetoView(view: SKView) {
super.didMovetoView(view)
self.view.addobserver(self,forKeyPath: "paused",options: .New,context: &queueContext)
}
override func observeValueForKeyPath(keyPath: String?,ofObject object: AnyObject?,change: [String : AnyObject]?,context: UnsafeMutablePointer<Void>) {
if context == &queueContext {
if let paused = change?[NSkeyvalueChangeNewKey] as? Bool {
// Todo: react on paused status changes
}
}
else {
super.observeValueForKeyPath(keyPath,ofObject: object,change: change,context: context)
}
}