ios - iOS 13.4访问MPMusicPlayerController.systemMusicPlayer使应用程序崩溃

标签 ios swift mpmusicplayercontroller

我在应用程序中有一个播放器控件,该控件是系统音乐播放器的控件(上一个播放/暂停下一个)。

为了显示正确的播放/暂停状态,我向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 <13.3x兼容,但不适用于iOS 13.4。
是来自Apple的这个新错误,还是我做错了什么?如何解决这个错误?

最佳答案

我遇到了完全相同的问题-该功能在iOS 13.3中工作正常,但在13.4中出现了问题。我通过反馈助手向Apple提交了一个错误。他们能够重现该问题,并且iOS 13.5 beta 4中有一个修复程序(该修复程序对我有用)。

应该在13.5的发行版本中修复。

关于ios - iOS 13.4访问MPMusicPlayerController.systemMusicPlayer使应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60848429/

相关文章:

html - 使用 HTML 数据调整 UILabel 的大小

swift - 如何在 SpriteKit 中改变物体的质量以随着重力下降得更慢

ios - 如何在 iOS 应用程序中播放 iTunes 广播?

ios - 如何将音乐从我的应用程序切换到 iPod

ios - MPMusicPlayerController 是否随 iOS 5 发生了变化?

objective-c - 使自定义 UIView 成为自定义 UITableViewCell 中的第一响应者

ios - Swift Closures - 如何传递参数并且没有返回值

iphone - 连续/重复 MKMapView

ios - 如果用户按下后退按钮,如何调用一些代码

ios - 如何让用户在具有多个 UIButton 的 View 中只选择一个自定义 UIButton? swift 3