2014-10-11 27 views

回答

0

所有项目都受DRM保护,它返回null assetURL。你不能访问这些项目

0

我想要的东西添加到这一点。有三个理由,我知道为什么assetURL将为空

  1. 该项目是在云中(在这种情况下isCloudItem将返回true)。
  2. 正如另一个答案所述,如果曲目受DRM保护。
  3. 这是踢球,寿:在某些情况下,和项目下载的设备,这是不DRM上,将在音乐播放(内置应用程序),但仍会有assetURL返回NULL。

这意味着任何使用MediaPlayer框架的非Apple应用程序都可能会遇到一些在Mu​​sic中播放但无法在App中播放的媒体项目。您的最终用户通常可以通过删除音乐中的违规音轨并再次下载来“解决”此问题。

我发现,如果我下载一个完整的专辑,看到这个问题,然后再下载专辑(删除之后)会导致有问题的一些不同的赛道,所以这并不是一个很好的路要走。

我已经进入了这个苹果错误报告(21477730)。我还使用了DTS来寻求解决方法:没有。如果你也遇到了这个问题,那么也是一个“我也是”的bug报告。这可能会增加修复的可能性。

如果你想尝试了这一点为自己,下面是我送与错误报告的代码。

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); 
     } 
    } 

} 
相关问题