MPMediaItemPropertyAssetURL
равно не ноль на iPhone X работает iOS 11 для песен сохранено в автономном режиме через Apple Music , но AVPlayer
не может их воспроизвести, поскольку они защищены DRM . Та же песня возвращает MPMediaItemPropertyAssetURL
ноль на iOS 9 .
MPMediaItemPropertyAssetURL
возвращает ноль для песен, добавленных в библиотеку через Apple Music , но недоступно в автономном режиме - оба на iOS 9 и 11 .
Таким образом, ответ @ voidStern (а не ответа Джастина Кента) является правильным способом проверки активов, защищенных DRM.
Swift 4 версия ответа voidStern (у меня отлично работает на iOS 9 до 11 ):
let itemUrl = targetMPMediaItem?.value(forProperty: MPMediaItemPropertyAssetURL) as? URL
if itemUrl != nil {
let theAsset = AVAsset(url: itemUrl!)
if theAsset.hasProtectedContent {
//Asset is protected
//Must be played only via MPPlayer
} else {
//Asset is not protected
//Can be played both via AVPlayer & MPPlayer\
}
} else {
//probably the asset is not avilable offline
//Must be played only via MPPlayer
}
Другой правильный способ проверки защищенного DRM-ресурса - использование свойства protectedAsset
MPMediaItem
- ответ @weirdyu. Но это свойство доступно только на iOS 9.2 и выше.
Swift 4 решение для этого метода (отлично работает для меня на iOS 9.2 и выше):
if #available(iOS 9.2, *) {
if (targetMPMediaItem?.hasProtectedAsset)! {
//asset is protected
//Must be played only via MPMusicPlayer
} else {
//asset is not protected
//Can be played both via AVPlayer & MPMusicPlayer
}
} else {
//Fallback on earlier versions
//Probably use the method explained earlier
}