我正在尝试使用 9.3 中的新 Apple Music API 将歌曲添加到我的应用创建的播放列表中,而不将其添加到用户的库中。
考虑产品 ID 316654632,它是美国 iTunes Store 中 Phoenix 的歌曲 Lisztomania。
使用以下代码,我可以播放歌曲
MPMusicPlayerController *musicPlayer = [MPMusicPlayerController systemMusicPlayer];
[musicPlayer setQueueWithStoreIDs:@[@"316654632"]];
[musicPlayer play];
使用以下代码,我可以将歌曲添加到我的 Apple Music 库中
[[MPMediaLibrary defaultMediaLibrary] addItemWithProductID:@"316654632" completionHandler:^(NSArray<__kindof MPMediaEntity *> * _Nonnull entities, NSError * _Nullable error) {
NSLog(@"%@", error);
}];
错误为零,我可以在我的库中看到这首歌。
但是尝试对播放列表进行相同操作是行不通的。
[[MPMediaLibrary defaultMediaLibrary] getPlaylistWithUUID:uuid creationMetadata:[[MPMediaPlaylistCreationMetadata alloc] initWithName:@"Test Playlist"] completionHandler:^(MPMediaPlaylist * _Nullable playlist, NSError * _Nullable error) {
NSLog(@"%@", error);
if (!error) {
[playlist addItemWithProductID:@"316654632" completionHandler:^(NSError * _Nullable error) {
NSLog(@"%@", error);
}];
}
}];
播放列表已创建,我可以在 Music.app 中看到它,但是当我尝试将我播放并添加到我的库中的相同产品 ID 添加到播放列表时,我收到错误
Error Domain=MPErrorDomain Code=4 "The requested id could not be found" UserInfo={NSLocalizedDescription=The requested id could not be found}
但是,如果我成功地将相同的项目添加到我的库中,怎么会找不到呢?
更新
好消息!Apple 已在 10.2.1 上修复了 rdar://26408683!