iOS iPod API - 获取实际歌曲文件

3

在我的应用中,我想呈现媒体选择器,让用户选择1首歌曲,然后获取它的实际MP3文件(或任何其他格式,只要其他iOS设备可以播放)。

如何完成这个任务? 我该如何创建一个带有歌曲文件的对象?


为什么这看起来像是你在试图未经许可获取mp3文件的方法? - DiMono
我将获取用户的许可... - Iddo Gino
事实上,我并不打算做任何非法的事情(这次是真的)。 - Iddo Gino
1
@IddoGino,DiMono可能有所发现。这听起来像是一个等待被拒绝的申请。如果您计划在应用商店上发布此应用程序,苹果几乎肯定会拒绝。当然,如果该文件仅保留在本地,而且只在本地使用,那么就没问题了。但是,如果您要尝试分发此文件,则不会被接受。但是,如果您的目的不是分发它,我很好奇您的目的是什么。媒体选择器可以离线使用,那么为什么需要实际声明该文件? - Josiah
我试图做的是将文件流式传输到另一台设备,以便在那里播放,但播放后文件不会保存在设备上。是否有其他方法可以做到这一点而不被拒绝? - Iddo Gino
1个回答

6

我不知道为什么大家都在说被应用商店拒绝的事情,我会简单介绍一下如何开始。

-呈现媒体选择器以打开用户的iPod:

MPMediaPickerController *pickerController = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeMusic];
pickerController.prompt = NSLocalizedString(@"Choose Song", NULL);
pickerController.allowsPickingMultipleItems = NO;
pickerController.delegate = self;
[self presentViewController:pickerController animated:YES completion:nil];
[pickerController release];

-等待用户选择歌曲并在mediaPicker代理中获取回调:

   - (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection
{
    MPMediaItem *theChosenSong = [[mediaItemCollection items]objectAtIndex:0];
    NSString *songTitle = [theChosenSong valueForProperty:MPMediaItemPropertyTitle];
    NSString *artist = [theChosenSong valueForProperty:MPMediaItemPropertyArtist];

   //then just get the assetURL
    NSURL *assetURL = [theChosenSong valueForProperty:MPMediaItemPropertyAssetURL];
    AVURLAsset  *songAsset  = [AVURLAsset URLAssetWithURL:assetURL options:nil];

  //Now that you have this, either just write the asset (or part of) to disk, access the asset directly, send the written asset to another device etc

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接