当尝试从我的ipod库中挑选一个项目时,有些项目会播放,有些项目不会。在我的日志中,有些项目的assetURL为NULL。为什么会这样?
所有项目都受DRM保护,返回空资产URL。您无法访问此类项目
我想添加一些内容。我知道assetURL
将为空的原因有三个
- 该项在云中(在这种情况下,
isCloudItem
将返回true) - 如另一个答案所述,如果曲目受DRM保护
- 这是关键:在某些情况下,在设备上下载的项目(不是DRM)将在音乐(内置应用程序)中播放,但资产URL仍将返回NULL
这意味着,任何使用MediaPlayer框架的非苹果应用程序都可能遇到一些在音乐中播放但无法在应用程序中播放的媒体项目。您的最终用户通常可以通过删除音乐中的违规曲目并重新下载来"解决"此问题。
我发现,如果我下载了一个完整的专辑并看到这个问题,那么再次下载专辑(删除后)会导致一些不同的曲目出现问题,所以这不是一个好办法。
我已经为此输入了一份苹果错误报告(21477730)。我还用DTS请求解决问题:没有。如果你也遇到这种情况,请向错误报告"我也是"。这可能会增加修复的机会。
如果你想自己尝试一下,下面是我在错误报告中发送的代码。
MPMediaQuery *allAlbumsQuery = [MPMediaQuery albumsQuery];
NSArray *allAlbumsArray = [allAlbumsQuery collections];
for (MPMediaItemCollection *collection in allAlbumsArray)
{
NSArray* items = collection.items;
MPMediaItem* rep = collection.representativeItem;
NSString* name = rep.albumTitle;
for(MPMediaItem* item in items)
{
NSURL* url = item.assetURL;
BOOL isCloudItem = item.isCloudItem;
if(!isCloudItem && (url==nil))
{
NSString* albumTitle = item.albumTitle;
NSString* trackTitle = item.title;
NSLog(@"****Nil: %@ %@",albumTitle,trackTitle);
}
}
}