我的应用中有一些音乐在AVAudioSessionCategoryAmbient
下播放。现在我的问题是,当Apple弹出一个像“登录iTunes Store”的弹出窗口时,它会暂停我的音乐,但不会恢复它。值得庆幸的是,它会照顾我的SKScene
...而不是音乐。是否有某种方法可以在警报被取消时进行回调?
奇怪的是,我所做的其他UIAlertView
不会对应用程序执行此操作,所以我真的不知道是什么。
暂停场景和音乐的提醒列表:
答案 0 :(得分:4)
我之前有过类似的问题(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)
}
}
答案 1 :(得分:2)
一些想法:
在玩家的rate
属性中添加键值观察。当费率更改时(系统UIAlertController
停止音频,再次开始播放。
对于StoreKit事务:我相信您可以为成功或不成功的SKPaymentTransaction
状态获取和设置回调。在这些回调中,再次开始音频播放。但这并不能说明电池电量不足的情况。