我在新应用中使用Alamofire(基于Alamofire的下载管理器示例),我需要一些有关使用后台会话下载文件的说明。我需要重写SessionDelegate才能使其正常工作?还是只是backgroundCompletionHandler
?
通常,使用Alamofire在后台处理下载的步骤是什么?以及如何处理我的应用程序重新启动,下载量不断增加的情况。
基于这个惊人的教程,我整理了一个GitHub上可用的示例项目。它有一个后台会话管理的例子。
根据Apple的URL加载系统编程指南:
在iOS和OS
X中,当用户重新启动您的应用程序时,您的应用程序应立即创建具有与上次运行应用程序时具有未完成任务的任何会话相同的标识符的后台配置对象,然后为每个配置对象创建一个会话。同样,这些新会话将自动与正在进行的后台活动重新关联。
因此,显然,通过使用适当的后台会话配置实例,您的下载将永远不会“不断变化”。
在Alamofire的GitHub页面上:
应用程序可以为后台会话和临时会话创建管理器,以及为默认会话配置进行自定义的新管理器,例如默认标头(HTTPAdditionalHeaders)或超时间隔(timeoutIntervalForRequest)。
默认情况下,顶级方法使用Manager
具有默认会话配置的共享实例。但是,您可以创建具有后台会话配置的管理器,如下所示:
let configuration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("com.example.app.background")
let manager = Alamofire.Manager(configuration: configuration)
然后,您可以使用该Manager
实例发出请求。
manager.startRequestsImmediately = true
let request = NSURLRequest(URL: NSURL(string: "your.url.here")!)
manager.request(request)
通过查看其实现,它还有一个名为的属性backgroundCompletionHandler
,因此您可以添加一个完成块:
manager.backgroundCompletionHandler = {
// do something when the request has finished
}
问题内容: 据我了解,默认情况下,Alamofire请求在后台线程中运行。 当我尝试运行此代码时: 在网络呼叫中的所有项目都完成打印之前,UI一直无响应。所以我尝试将GCD与Alamofire结合使用: 而且用户界面仍然没有响应。 我在这里做错什么了吗,还是问题出在Alamofire? 问题答案: 我对默认情况下在后台线程上运行Alamofire的做法有误。默认情况下,它实际上在主队列上运行。我已
我正在创建一个应用程序,其中我从服务器下载一些数据。在后台运行时,我希望连接应该继续运行,以便可以下载数据。我知道在app里有方法 当应用程序进入后台时调用。但由于连接是在viewController中创建的,如何在appDelegate中管理它 还有其他方法可以做到这一点吗?我已经通过了这个链接,但是有一个简单的实现方法吗?
我将spring-session与hazelcast和spring-security一起使用。我正面临spring security无法从HttpSession加载安全上下文的问题。在身份验证期间,我可以看到以下代码将安全上下文设置为会话: 但在spring重定向到目标url时进行身份验证后,它无法从会话中获取安全上下文,代码如下: 知道这里有什么问题吗?安全调试日志-
我试图使用Realm移动平台(Swift 3)制作一个具有实时协作的iOS应用程序,但由于缺乏文档和示例而陷入困境。目前我已经通过领域对象服务器进行了用户身份验证。我可以在服务器和所有用户之间同步数据。现在我希望两个用户在一个会话中连接,然后像在他们的绘图演示中一样在他们之间同步数据(观看https://realm.io视频)
在我的Vaadin应用程序中,当Vaadin在“session Timeout”消息之后没有使会话无效时,我遇到了一个问题。收到此消息后,用户有时可以单击链接或刷新页面,并继续工作,就像他们仍在登录一样。我使用以下参数: Last参数(session-timeout)也在context.xml(session-timeout=900)和web.xml(session-config/session-
问题内容: 在引发约束违规异常之后,有什么方法可以继续使用线程绑定的hibernate会话吗?我在这里举一个简短的例子: 从现在开始,hibernate会话完全没有用,即使对于只读操作,例如使用OpenSessionInView模式在视图中呈现惰性集合。 问题答案: Session的文档指出, 如果Session引发异常,则必须回滚事务并丢弃会话。 发生异常后,会话的内部状态可能与数据库不一致。。