是否可以将图像,视频下载到iPhone上?

时间:2010-01-25 20:17:26

标签: iphone objective-c image video

我正在构建一个应用程序,我们对图像和视频进行更新,并想知道是否可以从网络服务下载视频/图像,这些服务将以编程方式在iphone的某个位置托管这些资产?

可能通过卷曲服务或ftp?

3 个答案:

答案 0 :(得分:2)

有很多方法可以将文件从远程服务器下载到iPhone,有些甚至只需要一行代码。

最简单的方法可能是:

[NSData dataWithContentsOfURL:fileURL]

但这会阻止你的代码,直到下载文件,一个更有用的解决方案可能是使用NSURLConnection

NSURLRequest *request = [NSURLRequest requestWithURL:fileURL];
[NSURLConnection connectionWithRequest:request delegate:self];

实现NSURLConnection的委托方法

保存文件也可以通过多种方式完成,最简单的方法可能是:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *localFilePath = [documentsDirectory stringByAppendingPathComponent:@"newFileName.ext"];
[NSData writeToFile:localFilePath atomically:YES];

将数据保存到应用的文档目录

答案 1 :(得分:1)

您可以将任何您喜欢的内容下载到手机上(当然,主题是带宽和存储限制)。但是,只有某些格式的电影(例如m4v,而不是wmv文件)才能在设备上播放。

答案 2 :(得分:0)

是的,这是可能的,有多个地方(tmp和Documents)你可以写文件 - 如果你把下载的文件写到Documents目录,该文件将在你下次启动应用程序时可用,并将甚至在应用程序版本升级之间保持不变。您还可以在Documents目录中写入和编辑文件,这与应用程序的Resource目录中安装后无法更新的文件不同。这对你来说很棘手,因为对于任何给定的文件,将会有应用程序安装附带的版本(在参考资料中),你无法覆盖或编辑,然后是在Documents中的新版本,所以你的逻辑需要看到如果在Documents中有更新版本的内容,并播放该内容,而不是在应用程序的资源目录中回退。

为了下载,我建议使用可爱的所有看到我ASIHTTPRequest lib来做好文件到磁盘的异步/后台下载,包括进度信息和带宽限制(这是关键)。

http://allseeing-i.com/ASIHTTPRequest/

要考虑的另一部分是苹果将在不使用WiFi时拒绝使用过多带宽的应用程序,因此您需要将大量下载限制为仅通过WiFi,或者您需要将带宽限制在大约1mb /分钟。 ASIHTTPRequest做得非常好,虽然不能保证不被苹果公司打扰,但它比不受限制要好得多。

值得一提的是,对于流式视频,你现在必须使用http直播,但如果你没有下载,只是下载它以便以后播放,我想你需要担心的是没有超出带宽限制,使用有效的格式,并将文件写入Documents,以便在启动和应用更新之间保留。