消息通知系統(tǒng)設(shè)計(jì)注意事項(xiàng)
總結(jié)一下我在設(shè)計(jì)消息通知系統(tǒng)時(shí)候,遇到的難點(diǎn)與考慮到的問題,供大家參考,如有疏漏乾忱,還請多多交流,歡迎大家指點(diǎn)
數(shù)據(jù)庫數(shù)據(jù)存儲(chǔ)規(guī)則
用戶聊天時(shí)的數(shù)據(jù)在服務(wù)器有兩種處理方式:聊天記錄在云端存儲(chǔ)历极、聊天記錄僅存在本地窄瘟;
消息存儲(chǔ)在云端
用戶在換手機(jī)、更改賬號(hào)趟卸、清空本地緩存等時(shí)寞肖,再次進(jìn)入系統(tǒng)纲酗,所有記錄仍保持賬號(hào)或換手機(jī)之前的狀態(tài)衰腌;
聊天記錄僅本地保存
這里也會(huì)細(xì)分出兩種新蟆,數(shù)據(jù)庫標(biāo)記已讀與未讀,僅保存未讀消息右蕊,消息一旦被用戶讀取琼稻,釋放服務(wù)器數(shù)據(jù),另一種服務(wù)器只管分發(fā)饶囚,不論用戶讀與未讀帕翻,與服務(wù)器無關(guān),當(dāng)用戶換設(shè)備時(shí)萝风,不會(huì)顯示歷史消息
云端存儲(chǔ)消息的可以參考探探嘀掸、站酷
半存儲(chǔ)的可參考qq、微信(保存在本地规惰,但同時(shí)云端會(huì)保存一部分睬塌,云端會(huì)標(biāo)記消息已讀與未讀)
幾種處理方式優(yōu)劣對比
消息提醒方式
各種類型的消息分發(fā)到用戶,有用戶對用戶歇万、群發(fā)揩晴、系統(tǒng)消息、動(dòng)態(tài)消息等贪磺。所有的消息到達(dá)用戶時(shí)硫兰,用戶接收到的消息不一定都會(huì)收到提醒,此處就是C端APP中用戶的系統(tǒng)設(shè)定要考慮的功能了寒锚。
用戶端控制接收方式
提醒方式
消息全部到達(dá)APP端劫映,用戶端接收消息規(guī)則考慮如下,
提醒方式:聲音刹前、震動(dòng)泳赋,什么情況下都會(huì)提醒,單獨(dú)提醒設(shè)置等
未讀消息顯示規(guī)則
顯示未讀數(shù)量腮郊、不顯示未讀數(shù)量摹蘑、用戶屏蔽某些消息時(shí)顯示、系統(tǒng)通知類需不需要特殊處理等轧飞;
以上這些大體可以歸結(jié)為用戶主動(dòng)接收提醒與用戶被動(dòng)接收提醒
用戶主動(dòng)接收的提醒全部需要強(qiáng)烈發(fā)送到用戶給用戶知道衅鹿;
被動(dòng)接收的提醒無關(guān)緊要,僅告知用戶有此消息即可过咬;
消息提醒類型
強(qiáng)弱提醒
上面提到的主動(dòng)與被動(dòng)接收簡單對應(yīng)到強(qiáng)提醒與弱提醒
強(qiáng)提醒?主動(dòng)接收的消息
若提醒?被動(dòng)接收的消息
弱提醒具體弱到什么程度需要按實(shí)際情況來劃分大渤,如消息通知,弱到僅有一個(gè)紅點(diǎn)告訴用戶掸绞,hi~這有一個(gè)新消息泵三,具體是什么你感興趣就看看吧
如果說將某個(gè)群屏蔽掉耕捞,但是大家聊天聊了多少,這里就有必要告知一下用戶了烫幕,這里截了一下常見的qq和微信做個(gè)栗子
消息提醒范圍
用戶點(diǎn)對點(diǎn)聊天當(dāng)然對應(yīng)著聊天對象俺抽;用戶群發(fā)將消息分發(fā)到所有用戶;更新某用戶信息较曼,將單獨(dú)通知到某一用戶
以上這些很好理解磷斧,不過要注意的是介入第三方的時(shí)候要設(shè)計(jì)的點(diǎn)就很多了,需要單獨(dú)給研發(fā)一一列出來
舉一個(gè)小栗子吧捷犹,一個(gè)帖子弛饭,有發(fā)起人、有關(guān)注者萍歉、有參與人侣颂。當(dāng)有用戶評(píng)論時(shí),要通知到該帖子的發(fā)起方枪孩、關(guān)注者憔晒,而所有參與評(píng)論的用戶不必通知,如果具體評(píng)論回復(fù)了某人销凑,該用戶肯定會(huì)收到新消息……以上這種問題就需要單獨(dú)去考慮與設(shè)計(jì)了丛晌。
關(guān)于這個(gè)帖子,每個(gè)用戶接收到顯示的時(shí)候斗幼,是@你澎蛛,還是顯示內(nèi)容,如果僅僅用一套東西蜕窿,需要考慮到各個(gè)用戶都關(guān)心什么谋逻,確保所有收到消息的用戶都能知道是什么消息,對應(yīng)哪一個(gè)問題或要告訴用戶什么事情桐经。
結(jié)語
以上就是我在設(shè)計(jì)消息系統(tǒng)時(shí)候考慮的各種要素毁兆,具體我是怎樣選擇并設(shè)計(jì)的為了避免誤導(dǎo)這里沒有給出,希望大家根據(jù)公司實(shí)際情況阴挣、項(xiàng)目的具體需求而進(jìn)行設(shè)計(jì)气堕。