Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.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
在iPhone后台使用http请求下载文件(iOS 4.0以上版本)_Iphone_Ios_Ios4_Nsurlconnection_Nsurlrequest - Fatal编程技术网

在iPhone后台使用http请求下载文件(iOS 4.0以上版本)

在iPhone后台使用http请求下载文件(iOS 4.0以上版本),iphone,ios,ios4,nsurlconnection,nsurlrequest,Iphone,Ios,Ios4,Nsurlconnection,Nsurlrequest,我是iOS新手。 我想知道我的申请是否有一些基本需求? 当我的应用程序启动时(点击我的应用程序图标),应用程序应该从服务器下载5-10个文件。如果“Home”,它也应该在后台继续下载“按钮被按下。我的应用程序具有重试逻辑,即,如果无法访问服务器且出现请求超时,则应用程序将等待一段时间,并反复发送请求,直到下载完成。” 有可能吗?因此,您应该做的是,在应用程序delegate didFinishLaunchingWithOptions:,让它发出nsurlrequest(或来自开源框架的类似请求)

我是iOS新手。 我想知道我的申请是否有一些基本需求? 当我的应用程序启动时(点击我的应用程序图标),应用程序应该从服务器下载5-10个文件。如果“Home”,它也应该在后台继续下载“按钮被按下。我的应用程序具有重试逻辑,即,如果无法访问服务器且出现请求超时,则应用程序将等待一段时间,并反复发送请求,直到下载完成。”
有可能吗?

因此,您应该做的是,在应用程序delegate didFinishLaunchingWithOptions:,让它发出nsurlrequest(或来自开源框架的类似请求)。此外,自己编写重试逻辑也不难。一种常见的方法是指数退避,即等待2、4、8、16等毫秒,然后在某个时间点,如果服务器看起来确实停机了一段时间(如果遇到某个退避,请停止尝试),则显示UIalertview


对于进入后台的应用程序,这也在应用程序委托中。

一切都是可能的,只需使用github的AFNetworking库。这将使您非常轻松。但是,对于长时间运行的后台进程,它无法突破操作系统10分钟的限制。我对beginBackgroundTask也有同样的怀疑。我需要d在10分钟后继续重试。另外。运气不好,你不能在这么长时间后继续尝试。我已经在didFinishLaunchingWithOptions中使用nsurlrequest发送了http请求,并实现了重试逻辑。但在按下home按钮后,应用程序没有继续下载文件。所以我需要做什么才能在后台继续下载?beginBackgroundTaskWithExpirationHandler:该方法提供的时间有限。是的,我认为10分钟后您无法继续。