2014-07-17 36 views
0

我需要一段代碼,用於每天在00:00運行的Xcode (obj-c)
原因是因爲我的服務器在每一個新的一天更新數據,我希望我的應用程序與更新同步。Xcode - 每天在00:00運行代碼

我正在考慮做一個計時器,每分鐘運行一次,並檢查時間(從互聯網上,而不是電話時間),但似乎可以有一個更有效的方式。

幫助或指針真的很感激!
謝謝

+0

無法確保您的應用每天都在00:00在內存中。實際上,我會說它更可能不在記憶中。 – Stonz2

+0

如果用戶現在在00:00之後重新啓動應用程序,他將從服務器獲取新信息。問題是,如果應用程序在00:00之後保持打開狀態,它將不會與新數據同步,並且這是我希望它同步的時間。對不起,我不清楚 – Tompina

回答

0

在您的Mac上使用日曆應用程序。每天在0:00設置一個重複性事件。在選擇警報類型的位置,您可以選擇一個選項來打開文件(而不是彈出窗口等)。選擇您的應用程序作爲要打開的文件。

+0

雖然問題沒有特別清楚,但OP引用了「電話時間」,並標記了問題「ios」。我認爲這是公平的,假設這個問題是關於在00:00在iOS **上運行代碼**的。 –

0

當應用程序變爲活動狀態時,註冊本地通知(UILocalNotification)以在午夜觸發。

然後,您可以在執行更新的應用程序委託的-application:didReceiveLocalNotification:

然後,您可以取消該通知時,應用程序通過調用的UIApplication的方法-cancelLocalNotification:

+0

當然,您也必須在應用程序打開時進行更新,我的回答只包括在用戶在午夜打開應用程序時觸發更新。 @Subhransu回答說,通知不保證,但只適用於遠程通知。 Apple並未聲明本地通知無法保證。此外,他的回答並未解決用戶使用該應用程序的午夜更新。 – galrito

-1

我不認爲它甚至需要被切換到後臺在這裏使用通知。通知通常盡力而爲,並不保證交付。這可以通過幾個簡單的步驟完成。

  1. 將lastUpdated時間保存在您的iOS應用程序中。可能在NSUserDefaults中,或者如果你使用本地數據庫,你也可以在那裏存儲它。

  2. 每次用戶啓動應用程序檢查自上次更新以來經過了多長時間。

  3. 如果超過24小時,請對您的服務器進行API調用,並檢查是否有可用的新更新(您可以從服務器時間戳中確定)。獲取最新的數據(可能只是差異而不是所有事情)。

  4. 更新iOS應用程序中的lastUpdated時間。

+0

不保證傳遞的通知是遠程通知,而不是本地通知。此外,您的答案不能解決問題,即在用戶打開應用程序時在午夜更新數據。 – galrito

+0

如果應用程序處於前景模式,那麼本地通知是最好的方法。在特定時間使用[scheduleLocalNotification:](http://goo.gl/maZm5l) – Subhransu

+0

這正是我的答案。 – galrito