Цель C: Как проверить непрочитанные сообщения (номер, который будет отображаться в виде значка)
У меня есть tableView, хранящий список уведомлений (полученных с сервера). Как я могу проверить, просматривалось ли конкретное уведомление пользователем?
Я думал о
1) хранение идентификаторов уведомлений в NSUserdefaults и
2) проверить полученный список уведомлений по списку в NSUserdefault при запуске приложения,
3) если уведомление не существует в NSUserdefault, тогда уведомление == непрочитано и badgeValueCount++.
Однако это кажется крайне неэффективным и не масштабируемым.
Может кто-нибудь посоветовать более эффективный способ проверки на непрочитанные предметы (и установить значок со счетчиком непрочитанных). Спасибо!
2 ответа
Это во многом зависит от вашей системы. Например, если у пользователя может быть несколько клиентов, извлекающих уведомления, и вы хотите синхронизировать их, информация должна храниться на стороне сервера как часть пользовательских данных. Если это чисто клиентская проблема, а уведомления индексируются по времени, вы можете просто сохранить дату последнего запроса и спросить у сервера, сколько уведомлений новее этого. Если все это не удастся, список идентификаторов уведомлений имеет смысл (хотя я чувствую себя странно, если его ввести в пользовательские настройки по умолчанию, просто из-за чувства аккуратности и нежелания увеличивать настройки приложения по умолчанию).
Почему бы просто не хранить ваши "уведомления" в каком-то массиве? Вы сможете иметь количество объектов в массиве, а также проверить, находится ли объект внутри массива.