在iPhone上的标签栏项目上显示更新徽章计数的最佳方法

时间:2011-02-07 20:25:31

标签: iphone objective-c ios

我正在开发的iPhone应用程序主要通过API从Web应用程序获取数据。为了细节,我们只是说我正在开发一个活动源。

我的问题是,获取需要查看的新项目的最佳方法是什么,所以我可以在相应的标签栏项目上贴上徽章?

由于这可能令人困惑/太笼统,这就是我在想的......

毫无疑问,我必须在手机上存储某种时间戳或本地的东西(我应该使用SQLite吗?)。因此,假设每次有人点击具有提要列表的标签项时,我会使用任何方法记录该时间戳... SQLite,文件等。然后,我可以进行API调用,基本上获取新的活动项目比存储的时间戳更新,如果差异大于零,则显示徽章。

但是,当发生这种情况时,我会坚持到底,并且涉及整个过程。我该什么时候打电话?如果我在AppDelegate中这样做,它将永远不会被再次调用,对吧? (因为AppDelegate从不重新加载?)我可以在用户点击选项卡时执行此操作,但这样做会失败,因为我想让他们有理由点击选项卡(我没有点击语音邮件标签看看我是否有语音邮件,只有有一个徽章告诉我我这样做。然后是用户在应用程序 - 后台任务中更新徽章的问题? (我现在可以忽略这部分了)

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

谢谢!

1 个答案:

答案 0 :(得分:1)

有很多不同的方法可以做到这一点(如果我明白你想要做什么)。由于这是一个相当普遍的问题,我只能给出一般答案。

首先,因为这是一个标签栏App我可能会在App委托中创建一个NSTimer来调用每隔60秒的网络连接。您感兴趣的电话是

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

您也可以在一个线程中执行此操作,并在连接完成后将线程休眠60秒。如果您开始进行iPhone开发,我可能会坚持使用NSTimer。

就存储而言,如果你使用sqlite,它的依赖程度和所需的排序。甚至可以使用存储在NSMutableArray中的NSDictionary来存储带有时间戳的信息。

时间戳的问题是,在一段时间后它被认为是读取的吗?如果不是BOOL可能更好,一旦用户读取将bool转为false并调用App委托根据bool的条目数量重新加载徽章编号为真。

再次成为问题的抽象视图。如果您需要更多详细信息,请与我们联系。