Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS 13.4访问MPMusicLayerController.SystemMusicLayer会使应用程序崩溃_Ios_Swift_Mpmusicplayercontroller - Fatal编程技术网

iOS 13.4访问MPMusicLayerController.SystemMusicLayer会使应用程序崩溃

iOS 13.4访问MPMusicLayerController.SystemMusicLayer会使应用程序崩溃,ios,swift,mpmusicplayercontroller,Ios,Swift,Mpmusicplayercontroller,我在控制系统音乐播放器的应用程序中有一个播放器控件(上一次播放/下一次暂停) 为了显示正确的播放/暂停状态,我将向MPMusicLayerController播放BackstateDidChange通知添加一个观察者 func playPause() { let isPlaying = MPMusicPlayerController.systemMusicPlayer.playbackState == .playing isPlaying ? controller.pause()

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

为了显示正确的播放/暂停状态,我将向MPMusicLayerController播放BackstateDidChange通知添加一个观察者

func playPause() {
    let isPlaying = MPMusicPlayerController.systemMusicPlayer.playbackState == .playing
    isPlaying ? controller.pause() : controller.play()
}
苹果音乐应用程序运行时,一切都很顺利。但是,如果我关闭Apple Music应用程序并按下应用程序中触发playPause()函数的play按钮,则在我处理新的MPMusicLayerController播放BackstateDidChange通知时尝试获取当前播放状态后,应用程序会立即崩溃

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)
}

这段代码在iOS上运行良好我遇到了完全相同的问题-功能在iOS 13.3中运行良好,但在13.4中中断。我通过反馈助手向苹果提交了一个bug。他们能够重现这个问题,并且iOS 13.5 beta 4中有一个修复程序(该修复程序对我有效)


应在13.5的发行版中修复。

感谢您与反馈助手讨论此问题。我仍然在13.5的发行版中得到它。你确定已经修复了吗?我可以确认我的问题在13.5的发布版本中已经修复。我不再发生崩溃,但我确实需要调用
控制器.play()
两次代码才能开始播放音乐。我的代码与问题中的代码非常相似。