我的ipod库中的一些项目具有NULL assturl属性

时间:2014-10-11 14:12:50

标签: mpmediaitem

当我尝试从我的ipod库中选择一个项目时,有些项目会播放,有些则不会。 查看我的日志,一些项目对于assetURL有一个NULL。 为什么会这样?

2 个答案:

答案 0 :(得分:0)

所有项目都受DRM保护,返回null assetURL。您无法访问此类商品

答案 1 :(得分:0)

我想为此添加一些东西。我知道为什么assetURL为空

的原因有三个
  1. 该项目位于云端(在这种情况下isCloudItem将返回true)。
  2. 如另一个答案所述,如果该曲目受DRM保护。
  3. 这是踢球者,在某些情况下,在设备上下载的项目(不是DRM)将在Music(内置应用程序)中播放,但仍会使assetURL返回NULL。
  4. 这意味着使用MediaPlayer框架的任何非Apple应用程序可能会遇到一些在音乐中播放但无法在应用程序中播放的媒体项目。您的最终用户通常可以“修复”#34;通过删除音乐中的违规音轨并再次下载来解决此问题。

    我发现如果我下载完整的专辑并看到这个问题,那么再次下载相册(删除后)会导致一些不同的曲目出现问题,所以这不是一个好方法。

    我已为此输入了Apple错误报告(21477730)。我还使用DTS来要求解决方法:没有。如果你也遇到这个问题,那么我也会#34;到错误报告。这可能会增加修复的可能性。

    如果您想亲自尝试一下,下面是我发送错误报告的代码。

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