怎樣判斷一條信息是否已被用戶讀取了?
隨著移動互聯網的不斷發展,推送和消息中心成了很多APP必備的一個功能。
而一般我們在設計消息中心的時候,會遇到這種判斷用戶是不是已讀的情況。對于發件人,他想知道自己的消息是不是被所有人都閱讀了,還有哪些人沒有看到這個消息。對于收件人來說,我想要知道我有哪些是未讀消息,哪些是已讀消息。
為了要保證每個用戶看到的消息是獨立的,相互不影響的,將是否已讀放在消息表上自然是不可行的,所以,會有一個鏈表,用來關聯用戶表和消息表,標注消息是否已讀。
當用戶需要刪除消息時,也只是刪除用戶消息表的數據,對于消息表的數據沒有影響。
而當發送人想要拉回消息時,也是將消息的狀態改變,然后刪除所有未讀用戶的用戶消息表數據即可。
這樣,一個消息是否已讀,就可以通過用戶消息表中的已讀和未讀標記進行統計了。
如果我們還想要統計已讀的數量,未讀的數量,還可以將消息ID和已讀未讀數量緩存到Redis中,每當有用戶閱讀消息時,已讀數量+1,未讀數量-1即可。