【问题标题】:iOS 13.4 accessing MPMusicPlayerController.systemMusicPlayer crashes the appiOS 13.4 访问 MPMusicPlayerController.systemMusicPlayer 使应用程序崩溃
【发布时间】: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


    【解决方案1】:

    我遇到了完全相同的问题 - 功能在 iOS 13.3 中运行良好,但在 13.4 中中断。我通过反馈助手向 Apple 提交了一个错误。他们能够重现这个问题,并且在 iOS 13.5 beta 4 中有一个修复(修复对我有用)。

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

    【讨论】:

    • 感谢您与反馈助理讨论此问题
    • 我仍然在 13.5 版本中获得它。你确定它已经修复了吗?
    • 我可以确认我遇到的问题在 13.5 的已发布版本中已为我修复。我不再发生崩溃,但我确实需要调用controller.play() 代码两次才能开始播放音乐。我的代码与问题中的代码非常相似。
    猜你喜欢
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-24
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多