2012-10-24 30 views
2

我目前正在將我的應用從使用ASIHTTPRequest遷移到AFNetworking。我知道盡可能避免同步請求,但在我的應用程序中,我只有一個地方使用我的應用程序。在應用程序委託applicationDidEnterBackground()方法中,我需要運行HTTP請求來查詢數據,以在應用程序轉到後臺時設置應用程序徽章編號。當異步運行時,這很少有效,因爲該方法剛剛退出並且應用程序在HTTP請求完成之前暫停。使用ASIHTTPRequest,我使用了[request startSynchronous]方法,這意味着HTTP請求每次都完成100%,並且徽章被正確更新。我看到AFNetworking沒有明顯的同步選項,那麼任何人都可以提出一種可以同步使用的方法,或者一種替代解決方案嗎?iOS - 使用AFNetworking執行同步HTTP請求

回答

7

已經找到了做到這一點的方法 - 使用其中一個AFHTTPRequestOperation派生方法 - setShouldExecuteAsBackgroundTaskWithExpirationHandler:在操作系統掛起應用程序之前,該操作會給操作帶來額外的時間。所以我的代碼是:

[operation setShouldExecuteAsBackgroundTaskWithExpirationHandler:nil]; 
[operation start]; 

這正是我所需要的,並解決了我的問題。

喬納森

更新:由於鮑勃指出使用這種方法實際上並不同步進行操作,但在我的情況的理想解決方案在沒有同步方法。

+1

您開始了背景基礎任務。這不會執行請求同步。所以我建議你編輯你的問題來澄清。 –