2017-08-08 59 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;來防止這種情況,但顯然我錯了。