2016-05-15 53 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認爲他們仍然會出現 –