2012-06-28 2 views
1

Для данного MPMediaItem, представляющего трек в музыкальной библиотеке пользователя iOS5, то как мы можем определить, если трек:Есть ли способ различать iTunes Match и DRMed треки на iOS 5?

  • дорожку Itunes Match, который не был загружен с ICloud

vs.

  • DRMed трек

?

В обоих случаях NSURL, возвращаемый MPMediaItemPropertyAssetURL, равен нулю. Поэтому создание экземпляра AVAsset для проверки экспортируемого флага не является жизнеспособным решением.

ответ

1

Это мое понимание, что это зависит от версии iOS, которую вы используете. Я думаю, что до 4,3 актива, возвращающего nil, просто означало, что элемент был DRMed, и у вас не было доступа к нему. Однако в текущих версиях (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]; 

Это, кажется, работает хорошо для меня, но вы также предполагают, что вы возглавили вниз по тому же пути, уже, так что я не знаю, сколько помочь вам. Однако, удачи с вашим проектом, и я надеюсь, что вы найдете ответ, который вы ищете!

+0

Я могу сказать, что на iOS 5 URL-адрес ресурса равен нулю в случаях iCloud и DRM. Поэтому ваше решение (и это то, что я пробовал) не решает эту проблему. – awolf

+0

Я думаю, что у нас очень разные впечатления, использующие ОС. Позвольте мне знать, что вы нашли/нашли решение, я был бы благодарен, если бы услышал его. – btomw

 Смежные вопросы

  • Нет связанных вопросов^_^