SystemVolumeDidChangeNotification 永远不会在 iOS 14 上触发
Posted
技术标签:
【中文标题】SystemVolumeDidChangeNotification 永远不会在 iOS 14 上触发【英文标题】:SystemVolumeDidChangeNotification never get triggered on iOS 14 【发布时间】:2020-11-02 06:05:30 【问题描述】:另一个标题是“为什么 AVSystemController_AudioVolumeNotificationParameter 通知事件永远不会被触发?”
目标是监控音量变化事件及其值。按照detect up volume change swift 的指南进行操作。
在 ios 14.* 上,当我尝试观察音量变化事件时,该事件似乎在音量变化后永远不会被触发。
import MediaPlayer
override func viewDidAppear(_ animated: Bool)
super.viewDidAppear(animated)
NotificationCenter.default.addObserver(self, selector: #selector(volumeChange(_:)), name: Notification.Name(rawValue: "AVSystemController_SystemVolumeDidChangeNotification"), object: nil)
@objc func volumeChange(_ notification: NSNotification)
let userInfo = notification.userInfo!
let volume = userInfo["AVSystemController_AudioVolumeNotificationParameter"] as! Double
print("volume:\(volume)")
【问题讨论】:
【参考方案1】:需要先调用beginReceivingRemoteControlEvents
。
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 14.1 之前不需要使用它。以上是关于SystemVolumeDidChangeNotification 永远不会在 iOS 14 上触发的主要内容,如果未能解决你的问题,请参考以下文章