首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在iOS 15上停止触发SystemVolumeDidChangeNotification

在iOS 15上停止触发SystemVolumeDidChangeNotification
EN

Stack Overflow用户
提问于 2021-09-24 01:12:57
回答 1查看 201关注 0票数 2

我问了一下,并用SystemVolumeDidChangeNotification never get triggered on iOS 14找到了一个解决方案。该事件将被触发,并且可以通过我找到的解决方法在iOS 14中观察到。

代码语言:javascript
复制
override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    UIApplication.shared.beginReceivingRemoteControlEvents() // <- THIS LINE

    NotificationCenter.default.addObserver(self, selector: #selector(volumeChange(_:)), name: Notification.Name(rawValue: "AVSystemController_SystemVolumeDidChangeNotification"), object: nil)
}

但是,在将系统升级到iOS 15之后,事件停止触发。

EN

回答 1

Stack Overflow用户

发布于 2021-09-24 02:11:23

注意:此方法在模拟器中不起作用。它只能在真实的设备上工作。

在ViewController类内部,

代码语言:javascript
复制
    internal var volumeValueObservation: NSKeyValueObservation?

在ViewController生命周期方法中,

代码语言:javascript
复制
        do {
            let audioSession = AVAudioSession.sharedInstance()

            try audioSession.setActive(true) // <- Important
            
            volumeValueObservation = audioSession.observe(\.outputVolume) { av, _ in
                print(">>> DEBUG: [ViewController:handleVolumeChange]", av.outputVolume)
            }
        } catch {}

参考文献

Swift 4 Using KVO to listen to volume changes

System Volume Change Observer not working on iOS 15

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69308433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档