Objective-C的MPMediaItem与空URL
问题描述:
我有一个项目,该项目使用了一个MPMediaPickerController
的,从媒体播放器中选择音频文件。然而,尝试存储它的URL的时候,我得到什么,但null
返回。我的代码可以看到下面:Objective-C的MPMediaItem与空URL
- (void)showMediaPicker:(NSString *)title {
MPMediaPickerController *picker = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeAny];
picker.delegate = self;
picker.prompt = title;
picker.allowsPickingMultipleItems = NO;
picker.showsCloudItems = NO;
[self.viewController presentViewController:picker animated:YES completion:NULL];
}
- (void)mediaPicker: (MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection {
MPMediaItem *item = [mediaItemCollection.items firstObject];
NSURL *assetURL = [item valueForProperty:MPMediaItemPropertyAssetURL];//returning null
NSString *type = [self contentTypeForFile:assetURL.lastPathComponent];
NSString *title = [item valueForProperty:MPMediaItemPropertyTitle];
[self callbackWithName:title type:type url:assetURL];
}
无论出于何种原因,我*assetURL
是在从设备的库中选择一个音频项为零。唯一的答案我可以就这个问题找到往往涉及到URL时,从MediaPicker选择了云项目是null
。但是,如上所示,我已经设置了showCloudItems = NO
。
我将不胜感激任何帮助;让我知道你是否需要任何额外的信息!
答
事实证明,从“iCloud的音乐库”的音乐是DRM保护,因此,该assetURL是在MPMediaPickerController选择时保留为空。简单的解决方法是从“音乐”应用程序的设置中关闭“iCloud音乐库”设置。我希望picker.showsCloudItems = NO;
来防止这种情况,但显然我错了。
什么是'item'的价值? –
的NSLog(@ “%@”,项目)导致: 7217559012103102902 –
是否'NSURL * assetURL =(NSURL *)[项目valueForProperty:MPMediaItemPropertyAssetURL];'有什么影响? –