【问题标题】:Objective C: How to check for unread messages (number to be displayed as badge)目标 C:如何检查未读消息(要显示为徽章的数字)
【发布时间】:2011-07-13 17:37:36
【问题描述】:

我有一个 tableView 存储通知列表(从服务器检索)。如何检查用户是否查看了特定通知?

我在想

1) 将通知 ID 存储在 NSUserdefaults 和

2) 在应用启动时根据 NSUserdefault 中的列表检查检索到的通知列表,

3) 如果通知在 NSUserdefault 中不存在,则 notification == unread 和 badgeValueCount++。

然而,这似乎非常低效且不可扩展。

谁能建议一种更有效的方法来检查未读项目(并使用未读计数设置徽章)。谢谢!

【问题讨论】:

  • 是您的“通知”吗? NSString ?
  • @Vince,它们是每次用户加载表格内容时从服务器检索的对象。
  • 一旦用户点击单元格将对象放入您的数组中,您将能够知道哪些已被读取,哪些未被读取
  • 如果你只是想计算未读的数量,这个数字是通知的总数减去你放入数组的通知数

标签: objective-c ios badge read-unread


【解决方案1】:

这在很大程度上取决于您的系统。例如,如果用户可能有多个客户端获取通知并且您希望在它们之间进行同步,则必须将信息作为用户数据的一部分存储在服务器端。如果这纯粹是客户端的问题并且通知是按时间索引的,您可以只存储最后一次拉取日期并询问服务器有多少通知比那个更新。如果做不到这一切,通知 ID 列表是有意义的(尽管我觉得将其放入用户默认值很奇怪,只是出于整洁的感觉,并且不想随着时间的推移而膨胀应用程序的默认值)。

【讨论】:

  • 数据存储在服务器端。每次用户加载表时,他/她都会从服务器检索一组 Notification 对象。是的,这纯粹是客户端的问题,如果我纯粹基于上次拉动时间,它并不能真正指示用户是否实际查看通知(实际单击单元格)。基本上,我只是想模仿邮件应用程序,怎么可能像邮件应用程序一样跟踪未读总数?
【解决方案2】:

为什么不简单地将您的“通知”存储在某个数组中?您将能够获得数组中对象的数量,并检查对象是否在数组中。

【讨论】:

    猜你喜欢
    • 2015-12-06
    • 1970-01-01
    • 2021-07-09
    • 2012-07-22
    • 1970-01-01
    • 2021-06-07
    • 2014-07-29
    • 2014-05-21
    • 1970-01-01
    相关资源
    最近更新 更多