5

Я реализовал MPMediaPickerControllerКак я могу использовать UIDocumentInteractionController с MPMediaPickerController

- (IBAction)pickSong:(id)sender { 
    MPMediaPickerController *picker = 
    [[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeMusic]; 

    picker.delegate      = self; 
    picker.allowsPickingMultipleItems = NO; 
    picker.prompt      = NSLocalizedString (@"Select any song from the list", @"Prompt to user to choose some songs to play"); 
    picker.showsCloudItems = YES; 

    [self presentModalViewController: picker animated: YES]; 
} 
- (void) mediaPicker: (MPMediaPickerController *) mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection 
{ 
    [self dismissModalViewControllerAnimated: YES]; 
    if (mediaItemCollection.count > 0) { 
     MPMediaItem *mediaItem = [mediaItemCollection.items objectAtIndex:0]; 
     NSLog(@"%@ - %@, %@", [mediaItem valueForProperty:MPMediaItemPropertyTitle], [mediaItem valueForProperty:MPMediaItemPropertyArtist], [mediaItem valueForProperty:MPMediaItemPropertyAssetURL]); 


     self.fileURL = [mediaItem valueForProperty:MPMediaItemPropertyAssetURL]; 
    } 
} 

- (void) mediaPickerDidCancel: (MPMediaPickerController *) mediaPicker 
{ 
    [self dismissModalViewControllerAnimated: YES]; 
} 

и я также осуществил UIDocumentInteractionController отдельно, чтобы иметь возможность открыть песню в любом приложении, которое способно справиться с этим

- (IBAction)shareButtonPressed:(id)sender { 
    NSURL *url = [[NSBundle mainBundle] URLForResource:@"Song.mp3" withExtension:nil]; 
    self.docController= [UIDocumentInteractionController interactionControllerWithURL:url]; 
    [self.docController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES]; 
} 

прямо сейчас то, что я пытаюсь сделать, состоит в том, чтобы объединить их два, я хочу поделиться песней, которая выбрана пользователем, вот что я сохранил URL-адрес песни self.fileURL = [mediaItem valueForProperty:MPMediaItemPropertyAssetURL];, и я сделал простое изменение метода share

- (IBAction)shareButtonPressed:(id)sender { 
    NSURL *url = self.fileURL; 
    self.docController= [UIDocumentInteractionController interactionControllerWithURL:url]; 
    [self.docController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES]; 
} 

Я думал, что это будет работать, но вместо того, что я получаю ошибку говоря

* отказ Assertion в - [UIDocumentInteractionController setURL:], /SourceCache/UIKit/UIKit-2903.23/UIDocumentInteractionController .m: 1010 2013-10-28 03: 14: 10.294 ShareTest [1567: 60b] * Завершение приложения из-за Неоткрытое исключение «NSInternalInconsistencyException», причина: 'UIDocumentInteractionController: неверная схема ipod-library. Только поддерживается файловая схема. '

проблема явно с URL, я не выполнил его хорошо, или я думаю, что решение это было бы взять NSData в MPMediaItem и сохранить его в виде .mp3 файла в моем приложении, но Я не знаю, как этого добиться, а

Спасибо заранее

ответ

5

проблема является своего рода URL вы передается в качестве параметра.

Вам необходимо использовать этот метод: [NSURL fileURLWithPath:path], чтобы создать путь для UIDocumentInteractionController.

Схема URL вы создали это ipod-library, но должна быть file

 Смежные вопросы

  • Нет связанных вопросов^_^