未调用音量按钮通知功能.
码:
func listenVolumeButton(){
// Option #1
NSNotificationCenter.defaultCenter().addObserver(self, selector: "volumeChanged:", name: "AVSystemController_SystemVolumeDidChangeNotification", object: nil)
// Option #2
var audioSession = AVAudioSession()
audioSession.setActive(true, error: nil)
audioSession.addObserver(self, forKeyPath: "volumeChanged", options: NSKeyValueObservingOptions.New, context: nil)
}
override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void>) {
if keyPath == "volumeChanged"{
print("got in here")
}
}
func volumeChanged(notification: NSNotification){
print("got in here")
}
Run Code Online (Sandbox Code Playgroud)
listenVolumeButton() 正在viewWillAppear中调用
"got in here"在任何一种情况下,代码都没有进入print语句.
我正在尝试两种不同的方法来实现它,两种方式都不起作用.
我跟着这个:检测iPhone音量按钮向上按?
我用过
NotificationCenter.default.addObserver(self, selector: #selector(volumeChanged(_:)), name: NSNotification.Name(rawValue: "AVSystemController_SystemVolumeDidChangeNotification"), object: nil)
Run Code Online (Sandbox Code Playgroud)
过去可以听到音量控制变化,但这在 iOS 15 中不再起作用。
仅当您不关心用户在最大音量时按下音量时,下面的替代代码才有效。但是,我确实想知道每次按下按钮时的情况。
AVAudioSession.sharedInstance().addObserver(self, forKeyPath: "outputVolume", options: NSKeyValueObservingOptions.new, context: nil)
Run Code Online (Sandbox Code Playgroud)
即使音量处于最大/最小,聆听用户按下音量控制按钮的正确方法是什么?