我问了一下,并用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之后,事件停止触发。
发布于 2021-09-24 02:11:23
注意:此方法在模拟器中不起作用。它只能在真实的设备上工作。
在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 {}参考文献
https://stackoverflow.com/questions/69308433
复制相似问题