2014-02-17 183 views
0

我正在開發一個消息應用程序,我必須每x秒鐘向服務器發出一個調用以從服務器加載新消息。 我使用每隔x秒調用一次服務器的NSTimer。 但是,例如x = 1秒,服務器的響應在1.5秒後到達。在這種情況下,我向服務器發送了一個新的請求,在之前的請求得到滿足之前,這對我的應用邏輯來說是一個大問題。你能幫助我理解如何循環檢查服務器上的消息而不會出現此問題? 謝謝。NSTimer和服務器響應

+0

如果使用Apple推送通知通知您的應用程序是否收到用戶的消息,那麼該如何處理?這樣您就不必經常檢查服務器,看看是否有消息在等待。 – sangony

+0

@sangony是正確的。推送通知是更好的選擇。請記住,如果您的應用程序處於暫停狀態,則此方案不起作用。如果您不喜歡推送通知,則可以嘗試iOS7中的後臺抓取API。 – Foriger

回答

1

在開始您的網絡請求之前停止您的計時器,然後在獲得答案時重新啓動計時器。

1

您可以發送請求到服務器,一旦您有迴應(成功/失敗)發送另一個。在這種情況下,您將確保只發送一個請求,並且您可以輕鬆處理。

+0

我認爲這是最好的解決方案。唯一的問題是:如果服務器不發送響應會發生什麼?沒有辦法重新嘗試與服務器的連接。 – Anna565

+0

如果服務器沒有看到響應,您應該看到失敗消息(超時),正如我之前所說的,在成功和失敗的情況下發送另一個響應。 – Greg