Objective-C MPMediaItem с нулевым URL-адресом

У меня есть проект, который использует MPMediaPickerController для выбора аудиофайлов из медиаплеера. Однако при попытке сохранить его URL-адрес я не получаю ничего, кроме null. Мой код можно увидеть ниже:

- (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-адрес равен null, когда элемент облака выбирается из MediaPicker. Однако, как видно выше, я установил showCloudItems = NO.

Буду очень признателен за любую помощь; дайте мне знать, если вам нужна дополнительная информация!


person Justin Frazer    schedule 08.08.2017    source источник
comment
Каково значение item?   -  person l'L'l    schedule 09.08.2017
comment
NSLog(@%@, item) приводит к: ‹MPConcreteMediaItem: 0x170251a30› 7217559012103102902   -  person Justin Frazer    schedule 09.08.2017
comment
Имеет ли NSURL *assetURL = (NSURL*)[item valueForProperty:MPMediaItemPropertyAssetURL]; какое-либо влияние?   -  person l'L'l    schedule 09.08.2017
comment
К сожалению, я получил тот же результат   -  person Justin Frazer    schedule 09.08.2017


Ответы (1)


Оказывается, музыка из «Музыкальной библиотеки iCloud» защищена DRM, поэтому при выборе в MPMediaPickerController URL-адрес ресурса остается нулевым. Простое исправление заключалось в том, чтобы отключить параметр «Музыкальная библиотека iCloud» в настройках приложения «Музыка». Я ожидал, что picker.showsCloudItems = NO; предотвратит это, но, видимо, ошибся.

person Justin Frazer    schedule 09.08.2017