iOS-使用AFN网络执行同步HTTP请求

iOS-使用AFN网络执行同步HTTP请求,ios,http,afnetworking,badge,Ios,Http,Afnetworking,Badge,我目前正在将我的应用程序从使用ASIHTTPRequest迁移到AFNetworking。我知道如果可能的话,应该避免同步请求,但在我的应用程序中,我只有一个地方可以使用同步请求。在app delegate applicationIdentinterbackground()方法中,我需要运行一个HTTP请求来查询数据,以便在应用程序进入后台时设置应用程序徽章号。当异步运行时,这很少起作用,因为该方法刚刚退出,并且在HTTP请求完成之前应用程序被挂起。对于ASIHTTPRequest,我使用了[r

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

已经找到了实现这一点的方法-使用AFHTTPRequestOperation派生的方法之一-SetShouldExecuteAssBackgroundTaskWithExpirationHandler:在操作系统挂起应用程序之前,为操作提供额外的完成时间。所以我的代码是:

[operation setShouldExecuteAsBackgroundTaskWithExpirationHandler:nil];
[operation start];
这正是我所需要的,解决了我的问题

乔纳森


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

您启动了后台地面任务。这不会执行同步请求。所以我建议你修改你的问题来澄清。