我有一個應用程序可以創建消息,然後發送到主機服務器。iOS每5分鐘檢查一次
該應用程序必須能夠完全脫機工作,因此當消息創建(並存儲到CoreData中)時,它們被設置爲「未發送」。該應用程序然後嘗試立即發送它們。如果有連接並且服務器響應是肯定的,那麼我將消息設置爲「發送」。
當然,這意味着如果手機在創建信息時處於離線狀態,則永遠不會發送。
我的所有消息都是通過管理所有消息發送和排隊的單例對象發送的。
我試圖把NSTimer放入觸發發送每5分鐘(更改爲10秒進行測試)的單例init中。這工作正常,直到我停止應用的時間超過NSTimer的時間。
如果我停止了30秒的應用程序,然後重新啓動它,然後定時器不會觸發。
有沒有更好的方式來做到這一點,使我得到相同的功能?即每隔幾分鐘檢查一次傳出的消息併發送正在等待的任何消息。
編輯
我不是無效定時器或任何東西。只是,如果應用程序在計時器因火災而未激活時似乎不再安排。
的代碼爲我NSTimer
是...
[NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(sendMessages) userInfo:nil repeats:YES];
如果我把應用背景,然後將其激活之前的定時器是由於火,那麼它會繼續,沒有任何問題運行。但是如果我把應用程序放在後臺,然後等待30,那麼當我回到應用程序時,定時器不會再次啓動。
我不明白是什麼阻止你的計時器觸發。你可以發佈一些代碼,你已經設置你的計時器,還有代碼是你釋放它還是使其失效?謝謝! –
添加代碼來解釋計時器問題。 – Fogmeister