首页 > 解决方案 > MPMediaItemArtwork bounds.size 为零,而 iOS 音乐中提供了封面

问题描述

我正在尝试在 iOS 音乐应用中获取正在播放的歌曲的艺术作品。艺术品在 iOS 音乐应用程序中正确显示,但调用MPMediaItemArtwork.bounds.size返回(0,0)含义MPMediaItemArtwork.image(at: CGSize)无法返回图像。这听起来类似于iOS 8 中的这个问题,但实施那里的建议并没有解决我的问题。

该问题似乎与 Apple Music 中但未添加到用户资料库中的项目有关,但是一些不在用户资料库中的歌曲确实会加载艺术品。有时强制关闭 iOS 音乐应用程序可以解决问题,但有时不能。

这是我用来获取图像的代码。

mediaItem = MPMusicPlayerController.systemMusicPlayer.nowPlayingItem

if let artwork = mediaItem.artwork {
    // Forcing a size using artwork.image(at: CGSize(width: 120, height: 120)) also fails
    if let image = artwork.image(at: artwork.bounds.size) {
        artworkImage = image
        return
    }
}

我偶尔会在 Xcode 控制台中看到如下所示的错误,但并非每次无法加载艺术品时都会出现该消息,并且我无法以任何一致性重现它(即为同一首歌曲加载艺术品并不总是会产生错误)。

2020-06-03 11:03:11.763148+1000 App[] [Artwork] [MPArtwork] 
  HALTING -- Error loading artwork for catalog: 
    <MPArtworkCatalog: 0x2801b8c40 token=<MPMusicPlayerControllerNowPlaying: 0x282403120> fittingSize={0, 0} destinationScale=3.000000 destination=(null)>
  Error Domain=MPMusicPlayerControllerErrorDomain Code=7 "b1..5A:https://is3-ssl.mzstatic.com/image/thumb/Music5/v4/82/ce/dc/82cedc46-4097-a400-a496-b438faecfc49/dj.eaozurbq.jpg/1425x1425bb.jpg does not support artwork."
    UserInfo={NSDebugDescription=b1...5A:https://is3-ssl.mzstatic.com/image/thumb/Music5/v4/82/ce/dc/82cedc46-4097-a400-a496-b438faecfc49/dj.eaozurbq.jpg/1425x1425bb.jpg does not support artwork.}

标签: iosmpmediaitemapple-music

解决方案


推荐阅读