AudioPlayer 和 lockscreen/control 中心控制 Swift
AudioPlayer and lockscreen/control center control Swift
我是 Swift 的新手。我写信是因为我想问一个问题。我和我的朋友正在开发一个音频播放器,但我们遇到了一个问题。播放器也可以在后台运行,并且可以通过锁屏和控制中心进行远程控制,但是如果音乐被这两个控件之一中断,我们播放器的 play/pause 按钮不会更新为正确的图标。
我的问题是,我怎样才能通过遥控器之一让播放器清楚地知道音乐是 starting/stopping 并且播放器会相应地采取行动,更改 play/pause 按钮的图标?非常感谢,我希望我已经清楚了。
您需要使用 MPRemoteCommandCenter
来执行此操作。例如在你的 viewControllers viewDidLoad()
你可以添加这个:
override func viewDidLoad() {
super.viewDidLoad()
UIApplication.shared.beginReceivingRemoteControlEvents()
let commandCenter = MPRemoteCommandCenter.shared()
commandCenter.pauseCommand.addTarget { (event) -> MPRemoteCommandHandlerStatus in
//Update your button here for the pause command
return .success
}
commandCenter.playCommand.addTarget { (event) -> MPRemoteCommandHandlerStatus in
//Update your button here for the play command
return .success
}
}
只需更改我包含的评论即可更新您的按钮 UI。您还需要 导入 MediaPlayer
和 MediaPlayer.framework
如果您还没有这样做的话。
我是 Swift 的新手。我写信是因为我想问一个问题。我和我的朋友正在开发一个音频播放器,但我们遇到了一个问题。播放器也可以在后台运行,并且可以通过锁屏和控制中心进行远程控制,但是如果音乐被这两个控件之一中断,我们播放器的 play/pause 按钮不会更新为正确的图标。 我的问题是,我怎样才能通过遥控器之一让播放器清楚地知道音乐是 starting/stopping 并且播放器会相应地采取行动,更改 play/pause 按钮的图标?非常感谢,我希望我已经清楚了。
您需要使用 MPRemoteCommandCenter
来执行此操作。例如在你的 viewControllers viewDidLoad()
你可以添加这个:
override func viewDidLoad() {
super.viewDidLoad()
UIApplication.shared.beginReceivingRemoteControlEvents()
let commandCenter = MPRemoteCommandCenter.shared()
commandCenter.pauseCommand.addTarget { (event) -> MPRemoteCommandHandlerStatus in
//Update your button here for the pause command
return .success
}
commandCenter.playCommand.addTarget { (event) -> MPRemoteCommandHandlerStatus in
//Update your button here for the play command
return .success
}
}
只需更改我包含的评论即可更新您的按钮 UI。您还需要 导入 MediaPlayer
和 MediaPlayer.framework
如果您还没有这样做的话。