2016-05-15 60 views
0

我创建了一个应用程序,它可以获取设备上的所有歌曲,将其中的一些信息放入UITableView中,然后使用AVAudioPlayer播放选定单元格的歌曲。但是,由于某种原因,我的设备上的三首歌曲似乎没有Url。这些歌曲最近被购买了,可能在过去的两个月里。请参阅下面的代码。在iTunes上购买的媒体网址

//get all the songs 
var songsList: [MPMediaItem] = MPMediaQuery.songsQuery().items! 

if let url = song.valueForProperty(MPMediaItemPropertyAssetURL) as! NSURL? { 
      self.player = try! AVAudioPlayer(contentsOfURL: url) 
      let playing: Bool = player.play() 
      print("The audio play status: " + String(playing)) 
     } 
     else { 
      print("Failed to cast to URL") 
     } 

由于某些原因,这三首歌曲失败了从AnyObject类型转换?到NSURL?这意味着该网址不能存在于设备上?我不明白。我唯一的猜测是,我从另一台Macintosh设备的iTunes上购买了它们,并通过我的iTunes帐户通过云端传输将它们存储在那里。任何解释将是一个很大的帮助。

+1

苹果音乐曲目也许? – Moritz

+0

@EricD这是我第一次想到的...... –

回答

1

如果轨道是

A)不在设备上你不能得到一个资产URL - 至少不完全 - 但可以按需下载/流。这可能是由于没有完全发挥而产生的;在其他设备上购买/通过家庭共享购买;作为Apple Match轨道; yadayadayada。 B)受DRM保护。这些日子我觉得这很少见,但几年后这是一件大事。如果该文件的扩展名为.m4p,那肯定是问题所在。有报道称,它也出现在.m4a文件中,并在iTunes中显示为“已购买的AAC音频文件”,表明它表示您不允许听到所述音频。

+0

这些网址对于一些歌曲是无效的。我有mp4a和mp3。如果他们是mp4s ID认为他们仍然会出现 –