【问题标题】:SystemVolumeDidChangeNotification stopped getting triggered on iOS 15SystemVolumeDidChangeNotification 停止在 iOS 15 上触发
【发布时间】:2021-11-17 08:23:36
【问题描述】:

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

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 后,该事件停止触发。

【问题讨论】:

    标签: ios swift notificationcenter ios15


    【解决方案1】:

    注意:此方法在模拟器中不起作用。它仅适用于真实设备。

    在 ViewController 类中,

        internal var volumeValueObservation: NSKeyValueObservation?
    

    ViewController生命周期方法内部,

            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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-15
      • 2021-11-17
      • 2014-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多