2017-08-08 57 views
0

我有一个项目,该项目使用了一个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

我将不胜感激任何帮助;让我知道你是否需要任何额外的信息!

+0

什么是'item'的价值? –

+0

的NSLog(@ “%@”,项目)导致: 7217559012103102902 –

+0

是否'NSURL * assetURL =(NSURL *)[项目valueForProperty:MPMediaItemPropertyAssetURL];'有什么影响? –

回答

0

事实证明,从“iCloud的音乐库”的音乐是DRM保护,因此,该assetURL是在MPMediaPickerController选择时保留为空。简单的解决方法是从“音乐”应用程序的设置中关闭“iCloud音乐库”设置。我希望picker.showsCloudItems = NO;来防止这种情况,但显然我错了。