【发布时间】:2020-03-25 12:00:58
【问题描述】:
我在应用中有一个播放器控件控制系统音乐播放器(上一个播放/下一个暂停)。
为了显示正确的播放/暂停状态,我向 MPMusicPlayerControllerPlaybackStateDidChange 通知添加了一个观察者。
Apple Music App 运行时一切顺利。但是,如果我关闭 Apple Music 应用并在我的应用中按下触发 playPause() 函数的播放按钮,则在我尝试在处理新的 MPMusicPlayerControllerPlaybackStateDidChange 通知时获取当前的播放状态后,该应用会立即崩溃。
func playPause() {
let isPlaying = MPMusicPlayerController.systemMusicPlayer.playbackState == .playing
isPlaying ? controller.pause() : controller.play()
}
处理该通知的代码:
@objc
private func onPlayBackStateChanged() {
let playbackState = MPMusicPlayerController.systemMusicPlayer.playbackState // <<< This line crashes the app
updatePlaybackState(playbackState)
}
就在崩溃之前,我收到了这个日志:
2020-03-25 13:46:20.471063+0200 MYAPP[405:14911] [SDKPlayback] prepareToPlay failed [no target descriptor]
2020-03-25 13:46:33.305925+0200 MYAPP[405:14911] [SDKPlayback] prepareToPlay failed [no target descriptor]
2020-03-25 13:46:41.498197+0200 MYAPP[405:15072] [SDKPlayback] systemMusicPlayer connection invalidated
此代码适用于 iOS
【问题讨论】:
标签: ios swift mpmusicplayercontroller