尝试使用以下代码使用 MPMusicPlayerController 播放歌曲
let musicPlayerController = MPMusicPlayerController.systemMusicPlayer
func beginPlayback(itemID: String) {
let descripter = MPMusicPlayerStoreQueueDescriptor(storeIDs: [itemID])
descripter.startItemID = itemID
musicPlayerController.setQueue(with: descripter)
musicPlayerController.prepareToPlay(completionHandler: {(error : Error?) in
print()
self.musicPlayerController.play()
})
}
但是,在控制台中我经常看到
[MPMusicPlayerController prepareToPlay] 超时
并且要么什么都没有发生,要么播放器将从错误的歌曲开始,可能是我设备上的本地歌曲。
我正在尝试从我的 Apple Music Library 中播放一首歌曲,我使用他们的 API 来获取我的播放列表,然后是歌曲,曲目响应如下所示:
attributes = {
albumName = Villains;
artistName = "Queens of the Stone Age";
artwork = {
height = 1200;
url = "https://is3-ssl.mzstatic.com/image/thumb/Music117/v4/8b/19/86/8b19867d-f500-5396-bd6f-e89c0a69adcd/dj.tvdpbelw.jpg/{w}x{h}bb.jpg";
width = 1200;
};
durationInMillis = 341825;
name = "Feet Don\U0092't Fail Me";
playParams = {
id = "i.B0VN4GGf7Eldk";
isLibrary = 1;
kind = song;
};
trackNumber = 1;
};
href = "/v1/me/library/songs/i.B0VN4GGf7Eldk";
id = "i.B0VN4GGf7Eldk";
type = "library-songs";
}
我在这里使用“id”作为开始播放的 itemID 播放参数(i.B0VN4GGf7Eldk)。这是对的还是应该是别的东西?试图弄清楚为什么这不会播放。
编辑:
在控制台中也看到了这个
[SDKPlayback] -[MPMusicPlayerController prepareToPlayWithCompletionHandler:] 完成错误:错误域=MPCPlayerRequestErrorDomain Code=1“未提供命令。” UserInfo={NSDebugDescription=未提供命令。} [SDKPlayback] -[MPMusicPlayerController play] 完成错误:错误域=MPCPlayerRequestErrorDomain Code=1000 “发送命令 0 失败” UserInfo={NSDebugDescription=发送命令 0 失败,NSUnderlyingError=0x1c8045b20 {错误域=MPCPlayerRequestErrorDomain 代码=1000“发送命令 0 失败(MRMediaRemoteCommandHandlerStatus = 1)”UserInfo={NSDebugDescription=发送命令 0 失败(MRMediaRemoteCommandHandlerStatus = 1),MPCPlayerErrorKeyMediaRemoteCommandHandlerStatus=1}}}