2011-02-07 49 views
0

我正在開發的iPhone應用程序主要通過API從Web應用程序獲取其數據。爲了詳細說明,我們只是說我正在處理活動Feed。在iPhone上的標籤欄項目上顯示更新的徽章計數的最佳方式

我的問題是,什麼是最好的方式來計算需要查看的新項目,所以我可以在適當的標籤欄項目上貼一個徽章?

因爲這可能會造成混亂/太一般了,這裏就是我想...

我無疑會對本地存儲在手機上的某種時間戳或東西(我應該使用SQLite是什麼? )。因此,讓我們假設每當有人點擊具有提要列表的標籤項時,我會使用任何方法(SQLite,文件等)記錄該時間戳。然後,我可以進行API調用,從而獲得新的活動項目比存儲的時間戳更新,並且如果差值大於零,則顯示徽章。

但是,我被困在什麼時候應該發生,並且涉及到整個過程。我應該什麼時候進行初次通話?如果我在AppDelegate中執行它,它將永遠不會再被調用,對吧? (因爲AppDelegate永遠不會重新加載自己?)當用戶點擊該選項卡時,我可以做到這一點,但是這打破了目的,因爲我想給他們一個理由點擊選項卡(我不點擊語音郵件選項卡看看我是否有語音郵件,只有有一個徽章告訴我我)。然後,在用戶處於應用程序背景任務中時會出現更新徽章的問題? (我很好,現在忽略這部分)

希望你能看到我想要做的事情......想法,想法和/或建議非常感謝。

謝謝!

回答

1

有很多不同的方法來做到這一點(如果我明白你想要做什麼)。由於這是一個相當普遍的問題,我只能給出一般答案。

首先,因爲這是一個標籤欄應用程序,我可能會在App委託中創建一個NSTimer,以便每60秒調用一次網絡連接。您感興趣的呼叫是

scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;
這允許您指定每x秒運行一次的方法。

您也可以在線程中完成此操作,並在連接完成後將線程休眠60秒。如果你開始iPhone開發,那麼我可能會堅持使用NSTimer。

就存儲而言,如果你使用sqlite或者不使用sqlite,它需要多少和排序的相關性。甚至可能只是使用NSMutableArray中存儲的NSDictionary來存儲具有時間戳的信息。

時間戳事件的問題是,經過一段時間後是否被認爲是讀取?如果不是BOOL可能更好,一旦用戶讀取將布爾變爲false,並調用App代理重新加載基於bool爲true的條目數量的徽章編號。

再一次抽象的看問題。讓我知道你是否需要更多細節。

+0

謝謝,這有很大的幫助。如果遇到問題,我會發布更多細節。 – rpheath 2011-02-08 14:04:42

相關問題