swift - 使用音乐播放器控制器时未接收远程命令中心事件
问题描述
我正在尝试从远程命令中心接收关于何时点击播放/暂停按钮的通知,以便我可以适当地更新播放/暂停按钮的图像。但是,我没有收到有关何时按下播放命令/暂停命令的通知(即何时应该打印“轻按播放”或“轻按暂停”)。这是我第一次使用这个库,所以我跟着 Apples 文档,它说要使用 applicationMusicPlayer 或 applicationQueuePlayer 来实现一个音乐控制器来接收这些事件,但到目前为止我还不能。我不知道除了将其设置为 applicationQueuePlayer 之外是否还有其他需要做的事情。
这是我的代码,用于产生这种情况的非常简单的音乐播放器控制器:
let musicPlayer = MPMusicPlayerController.applicationQueuePlayer
override func viewDidLoad() {
super.viewDidLoad()
setupRemoteControl()
musicPlayer.setQueue(with: .songs())
}
func setupRemoteControl() {
UIApplication.shared.beginReceivingRemoteControlEvents()
let commandCenter = MPRemoteCommandCenter.shared()
commandCenter.playCommand.isEnabled = true
commandCenter.playCommand.addTarget { (_) -> MPRemoteCommandHandlerStatus in
print("tapped play")
return .success
}
commandCenter.pauseCommand.isEnabled = true
commandCenter.pauseCommand.addTarget {(_) -> MPRemoteCommandHandlerStatus in
print("tapped pause")
return .success
}
@IBAction func selectSongs(_ sender: UIButton) {
let controller = MPMediaPickerController(mediaTypes: .music)
controller.allowsPickingMultipleItems = true
controller.popoverPresentationController?.sourceView = sender
controller.delegate = self
present(controller, animated: true, completion: nil)
}
func mediaPicker(_ mediaPicker: MPMediaPickerController, didPickMediaItems mediaItemCollection: MPMediaItemCollection) {
musicPlayer.setQueue(with: mediaItemCollection)
mediaPicker.dismiss(animated: true, completion: nil)
musicPlayer.play()
}
解决方案
推荐阅读
- python - 如何将 pandas 地理编码功能应用于 Pyspark 列
- c++ - 断点函数执行 x 次
- autodesk-forge - 点击地理位置 _ Forge 查看器
- sas - 如何从 MACRO 的输出创建 SAS 变量
- python - 如何从时间序列数据中删除周末和节假日
- firebase - Firebase 性能监控 - 示例数据集
- bash - 如何在 Bash 中乘以列?
- c# - 为什么 Filedepency 上的 ExpireToken 不清除 CacheEntry?
- python - 从 python 调用 C# DLL API
- c# - TextBox 重新获得焦点,而其他控件则没有