iOS - 使用AFNetworking执行同步HTTP请求

Jon*_*ham 2 http badge ios afnetworking

我目前正在将我的应用程序从使用ASIHTTPRequest迁移到AFNetworking.我知道如果可能的话,应避免同步请求,但在我的应用程序中,我只有一个地方,我使用一个.在app delegate applicationDidEnterBackground()方法中,我需要运行HTTP请求来查询数据,以便在应用程序转到后台时设置应用程序徽章编号.当异步运行时,这很少起作用,因为该方法刚刚退出,并且在HTTP请求完成之前应用程序被挂起.使用ASIHTTPRequest我使用[request startSynchronous]方法,这意味着HTTP请求每次都完成100%并且徽章已正确更新.我看到AFNetworking没有明显的同步选项,那么有人可以建议一种可以同步使用的方式,或者另一种解决方案吗?

Jon*_*ham 7

已经找到了这样做的方法 - 使用AFHTTPRequestOperation衍生物之一有方法 - setShouldExecuteAsBackgroundTaskWithExpirationHandler:这使操作在操作系统暂停应用程序之前完成了额外的时间.所以我的代码是:

[operation setShouldExecuteAsBackgroundTaskWithExpirationHandler:nil];
[operation start];
Run Code Online (Sandbox Code Playgroud)

这正是我所需要的并解决了我的问题.

乔纳森

更新:正如Bob所指出的,使用这种方法实际上并不是同步执行操作,但在没有同步方法的情况下,这是我的理想解决方案.