我正在使用 MusicKit
ApplicationMusicPlayer
在我的应用程序中播放音乐。只要我不播放包含数百首歌曲的大型播放列表,一切都会正常工作。当我尝试播放超过 300 首左右的歌曲集时,我总是收到错误消息:
“准备播放失败” UserInfo={NSDebugDescription=准备播放 失败,NSUnderlyingError=0x121d42dc0 {错误 Domain=MPMusicPlayerControllerErrorDomain Code=9 "远程调用定时 out" UserInfo={NSDebugDescription=远程调用超时}}}))
歌曲是否下载到设备并不重要。 我知道玩家队列有一个另一个初始化程序,它接受
Playlist
实例,但在我的应用程序中,用户可以选择以与默认顺序不同的顺序对播放列表曲目进行排序,这使得使用该初始化程序对我来说不可行。
我尝试了我能想到的一切,我尝试依靠 MPMusicPlayerController
并将 MPMusicPlayerPlayParameters
数组传递给它,但结果是相同的。
typealias QueueEntry = ApplicationMusicPlayer.Queue.Entry
let player = ApplicationMusicPlayer.shared
let entries: [QueueEntry] = tracks
.compactMap {
guard let song = $0 as? Song else { return nil }
return QueueEntry(song)
}
Task(priority: .high) { [player] in
do {
player.queue = .init(entries, startingAt: nil)
try await player.play() // prepareToPlay failed
} catch {
print(error)
}
}
似乎是其他开发者经历过的限制。
Rudrank Riyam 写了很多关于使用 MusicKit 的文章,他甚至在 Twitter 上发布了有关您的具体问题的信息。
https://twitter.com/rudrankriyam/status/1758035733124722850
包含数百个项目的播放列表的用例是什么?