2017-08-08 10 views
0

J'ai un projet qui utilise un MPMediaPickerController pour sélectionner des fichiers audio à partir du lecteur multimédia. Cependant, en essayant de stocker son URL, je ne reçois rien, mais null retourné. Mon code peut être vu ci-dessous:Objective-C MPMediaItem avec l'URL nulle

- (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]; 
} 

Pour une raison quelconque, mon *assetURL est nul lors de la sélection d'un élément audio unique à partir de la bibliothèque de l'appareil. Les seules réponses que j'ai pu trouver concernant ce problème concernent souvent l'URL null lorsqu'un élément de cloud est sélectionné à partir du MediaPicker. Cependant, comme vu ci-dessus, j'ai mis showCloudItems = NO.

J'apprécierais grandement toute aide; laissez-moi savoir si vous avez besoin d'informations supplémentaires!

+0

Quelle est la valeur de 'item'? –

+0

NSLog (@ "% @", point) dans les résultats: 7217559012103102902 –

+0

Est-ce que 'NSURL * assetURL = (NSURL *) [article valueForProperty: MPMediaItemPropertyAssetURL];' avoir un effet? –

Répondre

0

Il s'avère que la musique de la «Bibliothèque musicale iCloud» est protégée par DRM et que, par conséquent, l'assetURL est vide lorsqu'il est sélectionné dans le MPMediaPickerController. La solution simple consistait à désactiver le paramètre "Bibliothèque musicale iCloud" dans les paramètres de l'application "Musique". Je m'attendrais à picker.showsCloudItems = NO; pour empêcher cela, mais apparemment je me suis trompé.