我需要一段代碼,用於每天在00:00運行的Xcode (obj-c)。
原因是因爲我的服務器在每一個新的一天更新數據,我希望我的應用程序與更新同步。Xcode - 每天在00:00運行代碼
我正在考慮做一個計時器,每分鐘運行一次,並檢查時間(從互聯網上,而不是電話時間),但似乎可以有一個更有效的方式。
幫助或指針真的很感激!
謝謝
我需要一段代碼,用於每天在00:00運行的Xcode (obj-c)。
原因是因爲我的服務器在每一個新的一天更新數據,我希望我的應用程序與更新同步。Xcode - 每天在00:00運行代碼
我正在考慮做一個計時器,每分鐘運行一次,並檢查時間(從互聯網上,而不是電話時間),但似乎可以有一個更有效的方式。
幫助或指針真的很感激!
謝謝
在您的Mac上使用日曆應用程序。每天在0:00設置一個重複性事件。在選擇警報類型的位置,您可以選擇一個選項來打開文件(而不是彈出窗口等)。選擇您的應用程序作爲要打開的文件。
雖然問題沒有特別清楚,但OP引用了「電話時間」,並標記了問題「ios」。我認爲這是公平的,假設這個問題是關於在00:00在iOS **上運行代碼**的。 –
當應用程序變爲活動狀態時,註冊本地通知(UILocalNotification)以在午夜觸發。
然後,您可以在執行更新的應用程序委託的-application:didReceiveLocalNotification:
然後,您可以取消該通知時,應用程序通過調用的UIApplication的方法-cancelLocalNotification:
當然,您也必須在應用程序打開時進行更新,我的回答只包括在用戶在午夜打開應用程序時觸發更新。 @Subhransu回答說,通知不保證,但只適用於遠程通知。 Apple並未聲明本地通知無法保證。此外,他的回答並未解決用戶使用該應用程序的午夜更新。 – galrito
我不認爲它甚至需要被切換到後臺在這裏使用通知。通知通常盡力而爲,並不保證交付。這可以通過幾個簡單的步驟完成。
將lastUpdated時間保存在您的iOS應用程序中。可能在NSUserDefaults中,或者如果你使用本地數據庫,你也可以在那裏存儲它。
每次用戶啓動應用程序檢查自上次更新以來經過了多長時間。
如果超過24小時,請對您的服務器進行API調用,並檢查是否有可用的新更新(您可以從服務器時間戳中確定)。獲取最新的數據(可能只是差異而不是所有事情)。
更新iOS應用程序中的lastUpdated時間。
無法確保您的應用每天都在00:00在內存中。實際上,我會說它更可能不在記憶中。 – Stonz2
如果用戶現在在00:00之後重新啓動應用程序,他將從服務器獲取新信息。問題是,如果應用程序在00:00之後保持打開狀態,它將不會與新數據同步,並且這是我希望它同步的時間。對不起,我不清楚 – Tompina