1st LINK работает для ViewController.
let volumeView = MPVolumeView(frame: CGRect.zero)
self.view.addSubview(volumeView)
NotificationCenter.default.addObserver(self, selector: #selector(volumeChanged(_:)), name: NSNotification.Name(rawValue: "AVSystemController_SystemVolumeDidChangeNotification"), object: nil)
@objc func volumeChanged(_ notification: NSNotification) {
if let volume = notification.userInfo!["AVSystemController_AudioVolumeNotificationParameter"] as? Float {
print("volume: \(volume)")
}
}
2nd LINK о фоновом использовании.
ВОПРОС: Как уведомить / применить действие в приложении, если кнопка громкости нажата более 5 секунд в фоновом режиме или когда экран заблокирован?
Примечание : В случае ViewController мы можем добавить подпредставление MPVolumeView
Согласно моим последним исследованиям: UIApplication.shared.setMinimumBackgroundFetchInterval(UIApplication.backgroundFetchIntervalMinimum)
может быть использовано для проверки кнопки ... однако, похоже, она не работает из AppDelegate .swift
Более того, согласно WWD C 2019 презентация есть путь через BackgroundTasks.
Все, что я нашел о фоновых процессах, которые вы можете запустить их до завершения приложения и дождитесь завершения или используйте кнопки проверки / события из запущенного приложения. Мы можем поймать кнопку Event на Android через сервис доступности. Есть ли похожий способ на iOS?