在 iTunes 上购买的媒体的 URL

URLs of Media Bought on iTunes

我创建了一个应用程序,它获取设备上的所有歌曲,将它们的一些信息放在 UITableView 中,然后使用 AVAudioPlayer 播放选定单元格的歌曲。然而,出于某种原因,我设备上的三首歌曲似乎没有 url。这些歌曲是最近购买的,可能是最近两个月购买的。请参阅下面的代码。

//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?意思是 url 不能存在于设备上?我不明白。我唯一的猜测是我在另一台 Macintosh 设备上从 iTunes 购买了它们,然后通过我的 iTunes 帐户通过云传输将它们存储在那里。任何解释都会有很大帮助。

如果曲目是

,您将无法获得资产URL

A) 不在您的设备上——至少不完全——但 download/stream 可以按需使用。这可能是由于未完全播放而引起的;正在通过其他 devices/via 家庭共享购买;作为 Apple Match 曲目; yadayadayada。

B) 受 DRM 保护。我想这几天已经很少见了,但几年前这是一件大事。如果文件的扩展名为 .m4p,那肯定是问题所在。有报道称它也出现在 .m4a 文件中,并且在 iTunes 中显示为 "Purchased AAC audio file" 表示它表示您不允许访问所述音频。