我一直在使用以下代码从MPMediaItemPickerController返回的MPMediaItem对象中提取资产url,以便我可以将音乐文件从用户iPhone itunes音乐库复制到文档文件夹进行处理,但在iPhone 5s上,我总是从MPMediaItemPropertyAssetURL获得一个空值,但是当我在iPhone 4或iPhone 5上运行相同的代码时,它的工作原理是它应该返回正确的URL。MPMediaItemPropertyAssetURL返回null仅适用于iPhone 5s
- (void) mediaPicker: (MPMediaPickerController *) mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection {
[self dismissViewControllerAnimated:YES completion:nil];
if(mediaItemCollection){
MPMediaItem *mediaItem = (MPMediaItem *)[mediaItemCollection.items objectAtIndex: 0];
NSString *songTitle = [mediaItem valueForProperty: MPMediaItemPropertyTitle];
NSLog(@"songtitle: %@", songTitle);
NSURL *assetURL = [mediaItem valueForProperty: MPMediaItemPropertyAssetURL];
NSLog(@"%@", assetURL);
}
}
我试过从有效的体系结构中删除arm64,只为armv7和armv7s构建,但是没有解决这个问题。
有没有人知道为什么会发生这种情况,我如何解决这个问题,或者如果有我可以使用的解决方法?我需要能够将音乐从iPhone的音乐库复制到文档文件夹,以便我可以正确处理dj应用程序的音乐。
感谢
iCloud的项目,它可以帮助你http://stackoverflow.com/questions/5571036/how-to-detect-if-an-mpmediaitem-represents -a-drm-protected-audio-track-on-ios/6401317#6401317 –
不幸的是,这正是我已经在使用的代码,它正在除iPhone 5s之外的所有设备上工作。以下代码总是在iPhone 5s上产生一个NULL assetURL变量。 NSURL * assetURL = [item valueForProperty:MPMediaItemPropertyAssetURL];我想它必须与64位体系结构有关,但我无法想象为什么它会是一个问题...谢谢 –
我也有这个问题,但与iPhone 5. MPMediaItemPropertyAssetURL总是返回零对于从设备上的查询返回的曲目 - 所以它必须在那里(我可以从iPod播放它) – Jonny