當(dāng)內(nèi)容更新時岛心,需要在入口加上小紅點提示来破,這種需求屢見不鮮,實現(xiàn)起來也不復(fù)雜忘古。實現(xiàn)的場景有很多徘禁,web 端、app 端髓堪、小程序端等等送朱,實現(xiàn)思路大同小異,本文從有無登錄態(tài)兩種情形干旁,講述解決問題的完整思路驶沼。
有登錄態(tài)
比較常規(guī)的做法是有用戶登錄態(tài)的情況,將用戶的已讀時間錄入至后臺的用戶數(shù)據(jù)信息中争群,當(dāng)內(nèi)容更新時回怜,把內(nèi)容更新時間和用戶已讀時間做對比,如果用戶已讀時間早于內(nèi)容更新時候换薄,在入口處給用戶提示小紅點玉雾,表示有更新內(nèi)容未讀。
1. 更新數(shù)據(jù)
第一步是更新數(shù)據(jù)轻要,在常規(guī)數(shù)據(jù)字段之外复旬,需要注意新增更新時間
字段。這樣用戶在獲取數(shù)據(jù)時伦腐,才方便后臺對比數(shù)據(jù)更新時間和用戶已讀時間赢底。
2. 獲取數(shù)據(jù)
第二步是獲取數(shù)據(jù),在獲取數(shù)據(jù)的時候柏蘑,帶上 userId幸冻,后臺在接收到請求之后,查詢該用戶上次的已讀時間咳焚,判斷該用戶是否瀏覽過最新的內(nèi)容洽损,也就獲取到用戶的已讀未讀狀態(tài)。
如果用戶最新閱讀時間晚于數(shù)據(jù)最新更新時間革半,則處于未讀狀態(tài)碑定,接口返回is_read: false
流码,前端拿到該字段后,請求設(shè)置已讀的接口延刘,后臺接收到設(shè)置已讀的請求后漫试,更新用戶數(shù)據(jù)中的已讀時間
字段。
如果用戶最新閱讀時間晚于數(shù)據(jù)最新更新時間碘赖,則處于已讀狀態(tài)驾荣,此時沒有內(nèi)容更新,不提示用戶小紅點普泡。
到這里播掷,一個簡單的擁有用戶登錄態(tài)的內(nèi)容更新提示小紅點的功能就完成了。
沒有登錄態(tài)
當(dāng)內(nèi)容需要推送給游客狀態(tài)的用戶時撼班,怎么才能知道該用戶是否瀏覽過最新發(fā)布的內(nèi)容呢歧匈?
1. 更新數(shù)據(jù)
更新數(shù)據(jù)和有登錄態(tài)的做法一樣,新增更新時間
字段就可以了砰嘁。
2. 獲取數(shù)據(jù)
獲取數(shù)據(jù)這一步有些不一樣件炉,數(shù)據(jù)更新時間依然是從后臺拉取,用戶最新閱讀時間則是從瀏覽器本地緩存 localStorage 中獲取矮湘。用戶首次進(jìn)入內(nèi)容頁時妻率,更新 localStorage 中的readTime
字段,表示用戶已讀時間板祝。
再次進(jìn)入內(nèi)容頁時,將 localStorage 中的已讀時間與數(shù)據(jù)更新時間對比走净,決定是否更新 localStorage 中的已讀時間券时,這樣就可以實現(xiàn)內(nèi)容更新時提示小紅點,內(nèi)容未更新時不提示了伏伯。但是由于沒有登錄態(tài)橘洞,是否讀過最新內(nèi)容不是根據(jù)用戶來決定的,而是根據(jù)客戶端瀏覽器決定说搅,適用于弱綁定的場景炸枣。
總結(jié)
本文分享了內(nèi)容更新時提示小紅點的解決思路,希望本文能讓你了解怎么去做消息通知的-內(nèi)容更新小紅點提示的實現(xiàn)過程弄唧。