iOS:当应用程序在后台时执行上传任务
当iOS应用程序处于后台时,真的没有办法运行UPLOAD任务吗? 这是荒唐的。 一直在寻找像NSURLSessionUploadTask
, dispatch_after
,甚至NSTimer
等各种东西,但没有任何工作超过微薄的应用程序居住在背后的10秒。
其他具有上传function的应用程序是如何工作的? 说,上传到Facebook的图像,并将应用程序在后台,将取消上传?
为什么iOS不能拥有后台服务或者Android和Windows Phone等代理?
这是我的应用程序的一个重要function,在其他平台上完美的作品。
任何帮助意识到:(
如果您在实例化NSURLSession
时使用[NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:]
作为configuration,则可以使用iOS 7+在后台继续上传。
注意:
-
你必须使用基于委托的
NSURLSession
; -
你不能在后台会话中使用任务工厂方法的
completionHandler
再现; 和 -
你也必须使用
uploadTaskWithRequest:fromFile:
方法,而不是NSData
再现。 -
您的应用程序委托必须实现
application:handleEventsForBackgroundURLSession:completionHandler:
并捕获完成处理程序,然后您可以调用您的NSURLSessionDelegate
方法URLSessionDidFinishEventsForBackgroundURLSession:
顺便说一句,如果您不想使用后台NSURLSession
,但是您希望在应用程序离开后台后继续运行有限长度的任务超过几秒,则可以使用UIApplication
方法beginBackgroundTaskWithExpirationHandler
请求更多时间。 这会给你几分钟的时间来完成你正在做的任何工作。 请参阅“ iOS应用程序编程指南”的“应用程序状态 和多任务”部分的“ 背景”部分中的“ 执行有限长度任务”中的清单3-3 :
UIApplication *application = [UIApplication defaultApplication]; bgTask = [application beginBackgroundTaskWithExpirationHandler:^{ // Clean up any unfinished task business by marking where you // stopped or ending the task outright. [application endBackgroundTask:bgTask]; bgTask = UIBackgroundTaskInvalid; }]; // Start the long-running task and return immediately. dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // Do the work associated with the task, preferably in chunks. [application endBackgroundTask:bgTask]; bgTask = UIBackgroundTaskInvalid; });
- 在iTunes上传后无效的二进制文件
- 如何在iOS中发布更多的图片上传代码参数?
- alamofire multipartformdata使用urlrequest
- Multipart / Formdata图片上传,获取文件
- iOS上的Twitter状态/ update_with_media返回500错误
- 缺less必需的图标文件。 该捆绑包不包含完全为'57×57'像素的iPhone / iPod Touch的应用程序图标
- 将图像上传到PHP服务器
- 上传PHP后修复iOS图片方向
- 上传IPA,奇怪的问题:错误ITMS-90032:“无效的图像path – 在键'$ key'下引用的path没有find图像:'$ path'