我想检查两个音量按钮是否工作正常。所以我设置观察者AVSystemController_SystemVolumeDidChangeNotification
来检查。
NotificationCenter.default.addObserver(self, selector: #selector(volumeCallback(notification:)), name: NSNotification.Name("AVSystemController_SystemVolumeDidChangeNotification"), object: nil)
给定的是volumeCallback
方法:
@objc private func volumeCallback(notification: NSNotification) {
// check if app is in forground
guard UIApplication.shared.applicationState == .active else {
return
}
//get volume level
if let userInfo = notification.userInfo {
if let volumeChangeType = userInfo["AVSystemController_AudioVolumeChangeReasonNotificationParameter"] as? String {
if volumeChangeType == "ExplicitVolumeChange" {
print("value changed")
let level = userInfo["AVSystemController_AudioVolumeNotificationParameter"] as? Float
guard let volLevel = level else {
return
}
// my work here
}
}
}
}
现在的问题是,我没有在volumeCallback
第一次安装应用程序时收到回调。奇怪的是,这个方法是在应用程序在后台时调用的,而不是在前台调用的。
我正在使用 iPhone 5s (iOS 10.3.3)。
我不明白这段代码有什么问题。任何帮助将不胜感激。