【发布时间】:2018-09-30 05:29:00
【问题描述】:
我正在我的应用程序中使用 AVAudioEngine 和 AVAudioPlayerNode 处理音频播放,并且我想实现远程控制。背景音频已配置并正在运行。
控制中心控件正常工作,但是当我从应用程序内部播放/暂停音乐时,播放/暂停按钮没有更新。 我正在真实设备上进行测试。
这是我的 AVAudioSession 设置代码:
func setupAudioSession() {
UIApplication.shared.beginReceivingRemoteControlEvents()
do {
try AVAudioSession.sharedInstance().setActive(true)
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
} catch let sessionError {
print("Failed to activate session:", sessionError)
}
}
MPRemoteCommandCenter 设置:
func setupRemoteControl() {
let commandCenter = MPRemoteCommandCenter.shared()
commandCenter.playCommand.isEnabled = true
commandCenter.playCommand.addTarget { (_) -> MPRemoteCommandHandlerStatus in
self.audioPlayerNode.play()
return .success
}
commandCenter.pauseCommand.isEnabled = true
commandCenter.pauseCommand.addTarget { (_) -> MPRemoteCommandHandlerStatus in
self.audioPlayerNode.pause()
return .success
}
}
锁屏控件 - 从未出现。
【问题讨论】:
-
@matt 编辑了问题
-
@matt 是的,一切都在后台播放得很好。背景模式已配置。也许我缺少一些 AVAudioEngine 特殊设置?
-
@matt 当然,我可以从控制中心播放/暂停音频。但是,如果我进入我的应用程序并暂停音频调用 AVaudioPlayerNode.pause() 例如,控制中心中的播放按钮图标不会从“暂停图标”更新为“播放图标”,同样的事情发生在反向
标签: ios swift avaudiosession avaudioengine mpremotecommandcenter