2014-03-12 49 views
0

我試圖做到這一點:AFNetworking GET沒有完成,而應用程序在後臺

1)無聲推送通知是由我的應用程序,通知它有新的數據通過後臺傳輸服務,即下載獲得內容可用= 1

2)該應用程序在後臺啓動,然後運行一個GET命令到我的服務器,以確定新文件的URL下載

3)該應用程序下載通過背景文件轉讓服務

我有這個工作正常,當應用程序正在運行。它需要兩個AFHTTPSessionManager對象。步驟#2需要一個在默認NSURLSessionConfiguration中初始化的,因爲GET函數使用數據任務,在後臺NSURLSessionConfiguration中不支持(見限制here)。步驟#3需要一個在後臺NSURLSessionConfiguration中的。

但是,當我通過運行推送通知在調試器中啓動應用程序時,GET調用從不調用成功或失敗塊。我要去調試 - >附加到進程,然後輸入我的進程名稱。然後,當我發送推送通知時,Xcode從「等待啓動」狀態變爲「附加到過程」狀態。我可以使用斷點來查看AFHTTPSessionManager是否正確創建,並調用GET:參數:success:failure函數。但是,成功/失敗塊中的斷點永遠不會被調用。

我能夠在應用程序處於後臺狀態時運行非後臺配置的會話管理器嗎?如果不是,我應該如何在後臺狀態下從我的服務器獲取下載信息?

回答

1

問題是應用程序在GET響應可能從服務器回來並且可以調用成功/失敗塊之前進入掛起狀態。

我不得不按照「在後臺執行有限長度任務」下的過程here。實質上,我需要在進行GET調用之前調用beginBackgroundTaskWithExpirationHandler:在應用程序中,以便操作系統知道不要立即掛起我的應用程序。

其他一切都只是一大堆紅鯡魚!

+0

即使用戶關閉了「後臺應用程序刷新」,「在後臺執行有限長度任務」仍繼續工作嗎? –

相關問題