为什么MPMediaItemPropertyAssetURL返回nil

时间:2015-07-29 10:04:35

标签: objective-c avaudioplayer

为什么音乐的网址为nil

MPMediaPlaylist *playlist = [self.musicCollection objectAtIndex:cindex];
MPMediaItem *item = [playlist.items objectAtIndex:mindex];
NSUrl *url = [item valueForProperty:MPMediaItemPropertyAssetURL] ;
NSLog(@"URL == %@");

为什么要记录url = nil

1 个答案:

答案 0 :(得分:0)

MPMediaItemPropertyAssetURL / MPMediaItem assetURL为null / nil有两个原因。

  1. 音乐未下载到您的设备,但已添加到音乐中 仅库。
  2. 音乐已加载,但受DRM保护。

受DRM保护的资产无法使用AVPlayer播放,它只能使用MPMusicPlayer播放。因此,在继续使用AVPlayer之前,您必须检查两件事。

  1. MPMediaItemPropertyAssetURL为零吗?
  2. MPMediaItem是否受保护?

请参见下面的代码...。

MPMediaItem *theChosenSong = [[mediaItemCollection items] firstObject];
NSURL *assetURL = [theChosenSong valueForProperty:MPMediaItemPropertyAssetURL];

if(assetURL) {
        BOOL bIsProtected = theChosenSong.protectedAsset;
        if(!bIsProtected) {
            // Do whatever you want to do
            NSLog(@"Its not protected");
       }
        else {
            NSLog(@"Its DRM protected");
        }
    }
    else {
            NSLog(@"Its DRM protected");
    }