MPMediaItemPropertyAssetURL возвращает null только для iPhone 5s
Я использовал следующий код, чтобы извлечь URL-адрес ресурса из объекта MPMediaItem, возвращенного из MPMediaItemPickerController, чтобы я мог копировать музыкальные файлы из музыкальной библиотеки iPhone iPhone itunes в папку документов для обработки, но на iPhone 5s я всегда получить нулевое значение из MPMediaItemPropertyAssetURL, но когда я запускаю тот же код на iPhone 4 или iPhone 5, он работает так, как будто он должен возвращать правильный URL-адрес.
- (void) mediaPicker: (MPMediaPickerController *) mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection {
[self dismissViewControllerAnimated:YES completion:nil];
if(mediaItemCollection){
MPMediaItem *mediaItem = (MPMediaItem *)[mediaItemCollection.items objectAtIndex: 0];
NSString *songTitle = [mediaItem valueForProperty: MPMediaItemPropertyTitle];
NSLog(@"songtitle: %@", songTitle);
NSURL *assetURL = [mediaItem valueForProperty: MPMediaItemPropertyAssetURL];
NSLog(@"%@", assetURL);
}
}
Я попытался удалить arm64 из допустимых архитектур и создать только для armv7 и armv7s, но это не устранило эту проблему.
Кто-нибудь знает, почему это происходит, и как я могу это исправить, или если есть обходной путь, который я могу использовать? Мне нужно иметь возможность копировать музыку из музыкальной библиотеки iPhone в папку документов, чтобы я мог правильно обрабатывать музыку для приложения dj.
Спасибо
Ответы
Ответ 1
Я выяснил, что проблема заключалась в том, что песня, которую я пыталась получить для свойства MPMediaItemPropertyAssetURL, на самом деле не была на моем устройстве. Он был указан в медиа-библиотеке, но на самом деле был все еще в iCloud. Как только я загрузил песню на свое устройство, проблема была решена. Насколько мне не нравится отвечать на мой собственный вопрос, я принял совет Джеруэна, чтобы он мог надеяться помочь другим.
Ответ 2
Мы можем добавить фильтр, который не отображает элементы iCloud с помощью
[mediaPicker setShowsCloudItems:NO];