Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从internet下载音频/视频文件并存储在iPhone应用程序中?_Iphone_Ios_Download_Audio Streaming_Audio Player - Fatal编程技术网

如何从internet下载音频/视频文件并存储在iPhone应用程序中?

如何从internet下载音频/视频文件并存储在iPhone应用程序中?,iphone,ios,download,audio-streaming,audio-player,Iphone,Ios,Download,Audio Streaming,Audio Player,我正在开发一款iPhone音乐应用程序。我想为用户提供一些选项,以便他们可以通过流媒体收听歌曲/音乐,或者在应用程序中下载音乐。我知道如何以编程方式在应用程序中传输音频文件。但是,我不知道如何在应用程序中下载音频文件,并在下载后播放音频。用户还可以在下载时暂停下载。有可能吗?任何人都可以指导我,请为我分享任何示例代码或教程吗?我还有一个疑问:你能帮我在应用程序中创建一个文件夹吗?请帮帮我。提前感谢。创建文件夹 对于每个应用程序,您都有一个文档文件夹。您在应用程序中使用的所有文件都存储在此处。如果

我正在开发一款iPhone音乐应用程序。我想为用户提供一些选项,以便他们可以通过流媒体收听歌曲/音乐,或者在应用程序中下载音乐。我知道如何以编程方式在应用程序中传输音频文件。但是,我不知道如何在应用程序中下载音频文件,并在下载后播放音频。用户还可以在下载时暂停下载。有可能吗?任何人都可以指导我,请为我分享任何示例代码或教程吗?我还有一个疑问:你能帮我在应用程序中创建一个文件夹吗?请帮帮我。提前感谢。

创建文件夹

对于每个应用程序,您都有一个
文档文件夹
。您在应用程序中使用的所有文件都存储在此处。如果要在此处创建更多目录,请执行以下操作:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"MyNewFolder"];

if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
    [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]; //Create folder if it doesn't already exist
下载

如果您想从internet下载音频文件,那么您需要查看一种异步方法。这意味着应用程序可以在后台下载时继续执行操作

为此,我建议您使用。它非常适合执行任何下载请求,为您提供了许多选项,例如暂停下载(根据您的请求)

该网站提供了大量关于下载和存储文件的文档。请查看第页的下载文件部分

你只需要做一些类似的事情:

NSURL *url = [NSURL URLWithString:@"http://www.fileurl.com/example.mp3"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDownloadDestinationPath:[NSString stringWithFormat:@"%@",dataPath]]; //use the path from earlier
[request setDelegate:self];
[request startAsynchronous];
然后通过ASIHTTPRequest提供的委托方法处理进度和完成

播放

播放文件非常简单。一旦它在设备上,你知道它在哪里,只需将它加载到音频播放器

这里有一个关于使用播放声音的很棒的教程。在您的案例中使用它的一个非常简单的例子是:

NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/audiofile.mp3",dataPath];

NSError *error;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];

if (audioPlayer == nil)
    NSLog([error description]);
else
    [audioPlayer play];

是的,您可以通过AVAudioPlayer下载音频文件并播放下载的文件。我不知道下载时如何暂停,但我已经下载了音频并播放了。您可以通过HTTP请求或其他方式下载

你可以点击这些链接


  • 是的,当然ASIHTTPRequest是最好的方法,你应该使用这个下载你的音频文件,如果出现问题,请让我知道,我会尽力解决,insha Allah。很棒的评论,很好的解释+1+1对于这样一个伟大的答案:),这应该被接受,想知道为什么人们会问这个问题然后消失:(我建议使用AFNetworking而不是ASIHTTPRequest,不过这是一个非常好的答案@LiamgeorgeBetsworth是的,我同意@GangstaGraham的观点,他应该使用AFNetworking,但请看日期。AFNetworking类在当时不可用。@EshwarChaitanya最好使用AFNetworking,因为ASIHTTPRequest类很多错误经常破坏应用程序。几乎每个人都切换到AFNetworking。我建议你也尽快这样做。你应该接受@Liam George Betsworth的回答,他已经尽力了。