我有一個AsyncSocket的實例,我一直使用它作爲iPad上的服務器,然後是另一個充當客戶端的iPad上運行的AsyncSocket套接字。我有所有必要的代碼在客戶端和服務器之間交換數據 - 這裏沒有問題。CocoaAsyncSocket在後臺無法工作
我遇到的問題是,這一切工作正常,但我的應用程序的漏洞在測試過程中,我注意到一個特別奇怪(和刺激性的問題):
如果我關閉服務器的iPad(在沒有任何一個套接字的委託在服務器上被觸發),然後客戶端斷開連接(並進入一個我不斷重試的循環)。令人討厭的是,即使服務器重新啓動,客戶端仍然無法連接到它。事實上,即使我從頭開始重新啓動客戶端,它仍然無法連接到服務器。我必須重新啓動服務器應用程序才能讓客戶端再次連接。
奇怪的是,只有當服務器從頂部的按鈕切換到「關閉」(即進入待機狀態)時,纔會觸發此錯誤。如果我只是使用主頁按鈕將應用程序發送到後臺,則客戶端仍然保持與服務器的連接:只有當設備斷開連接時,客戶端纔會收到斷開連接委託消息並斷開連接,然後拒絕重新連接。與此同時,服務器完全沒有意識到這一點,也沒有任何委託方法被解僱。
爲了推廣我的問題:
- 當設備使用的按鈕的iPad的頂部置於待機到底發生了一個AsyncSocket服務器實例?
- 爲什麼沒有委託方法被激發,但是所有連接的客戶端都被斷開連接?
- 設備再次打開時會發生什麼?
- 爲什麼客戶端無法重新連接?
UIApplicationDidEnterBackgroundNotification - > UIApplicationDidBecomeActiveNotification – david
appEnteredBackground - > applicationDidBecomeActive – david