有没有办法区分iOS 5上的iTunes Match和DRMed曲目



对于表示 iOS5 用户音乐库中曲目的给定 MPMediaItem,我们如何确定曲目是否为:

  • 尚未從 iCloud 下載的 iTunes Match 曲目

与。

  • 一个经过数字版权管理的曲目

在这两种情况下,MPMediaItemPropertyAssetURL 返回的 NSURL 均为 nil。因此,实例化 AVAsset 以检查可导出标志不是一个可行的解决方案。

据我了解,这取决于您使用的iOS版本。我认为在 4.3 之前,返回nil的资产仅意味着该项目是 DRM 的,而您无权访问它。但是,在当前版本(5)中,nil表示它只是iCloud。也许您认为只是DRMed的曲目,但实际上是iCloud存储的歌曲。在我正在开发的当前应用程序上,我最初根本没有考虑iCloud跟踪(因为我针对以前版本的iOS定位该应用程序),因此根据我使用的设备,我会遇到崩溃。为了解决这个问题并测试iCloud/DRM,我使用:

AVURLAsset* asset;
NSURL* realAssetUrl = [item valueForProperty:MPMediaItemPropertyAssetURL];
if(!realAssetUrl){
    //track is iCloud
}
asset = [[AVURLAsset alloc]initWithURL:realAssetUrl options:nil];
if(asset == nil || asset.hasProtectedContent){
    //asset is DRMed such that it cannot be played back.
            //most apps can stop here but I need to be able to export the song
}
if (!asset.exportable || !asset.readable){
    //the asset cannot be exported and thus cannot be cached to a file
            //the current app directory and cannot be transferred over network
            //if asset passed earlier check, can still be used for local playback
}
[asset release];

这对我来说似乎很好,但你也暗示你已经走上了同样的道路,所以我不确定这对你有多大帮助。但是,祝您的项目好运,我希望您找到所需的答案!

相关内容

  • 没有找到相关文章

最新更新