寫在前面: 通知系統是網站信息傳播機制的重要的一部分,足夠寫一大章來講明。本文只梳理設計原則,後續相關內容會持續更新。 這裏的通知包括但不限於公告、提醒或消息(不一樣使用場景下的功能定義不一樣)。 關於各客戶端平臺(ios、android、wp等)的通知機制,在其交互設計指南中有更詳細的說明,你們可自行參考。 android
通知系統,顧名思義即通知信息的傳達處理系統。目的是爲了讓用戶得到須要獲得的消息及提醒並進行處理。 ios
這裏的「須要獲得」有兩層意思: 一、用戶彼此互動觸發的信息流(留言、評論或者回復、私信等) 二、網站但願用戶瞭解關注的信息(系統公告等) web
通知系統設計的原則可簡單的概括爲: 一、消息傳播效率最高(獲取、處理、信息傳達、用戶反饋等效率) 二、避免產生騷擾(噪音、頻繁提示) 服務器
不用的平臺和產品自己因爲對業務的需求不同,種類也是有區別的。 優化
大體可分爲如下幾種: 網站
通知的邏輯精簡後以下: ui
現對這幾個環節分開說明: spa
通知在推送以前須要進行彙總合併,目的在於提升消息傳播處理效率;減小騷擾,下降噪音;平衡服務器壓力。 .net
固然通常都組合着用:合併24小時內未處理消息 設計
通知按照規則彙總完成後,系統將其經過通知管道推送到用戶,以便用戶處理。
分發方式與Feed系統相似,多采用Push方式,即在指定時間內主動推送給用戶。部分特定類型須要用戶請求(Pull)拉取未讀消息。 目前大部分通知優先推送未處理通知合併後的總數,已提醒用戶已有新消息須要處理。用戶點擊數字後再去服務端請求具體的消息內容。此種方式綜合考慮了成本、壓力和體驗。固然,某些極端狀況下須要進行優化處理:如未讀消息超過1000,用戶請求時先推送前50條或者放入cache中等。技術童鞋會有各類手段,這裏不作詳述。
分發時間主要根據消息的優先級來作區隔:
分發管道即消息通知的具體推送渠道,根據業務類型能夠分爲:Web、App、短信、郵件等。
根據前文提到的分發方式,對於通知的處理在邏輯上能夠分爲兩層:通知狀態的處理和通知內容的處理。
一般初始數字即爲系統推送過來的未讀總量,用戶點擊數字進入相關功能列表查閱後,讀取的動做完成,未讀數字相應減小。
有幾種狀況須要變通處理:
根據不一樣消息的種類和業務的須要,操做可分爲:
消息須要標記是否已處理的狀態,且狀態在不一樣的終端是打通的。 如:用戶在客戶端對消息進行了查看,在web站點本消息應自動標記爲已讀狀態。
回收主要針對用戶已處理消息的操做。
注:具體的交互須要考慮自己業務特色和目標需求。特定業務可能須要強調,某些業務又須要考慮騷擾,故拋開具體情境自己談交互是無恥的。
這裏只針對通常的社區網站,描述一下我的所喜歡的交互方式。
當新消息到達時,可使用如下提醒方式
目前消息多采用當前觸發、即時處理相似「所見即所得」的交互方式。 
採用此方式的須要考慮:
因消息自己業務性質,過多無用通知勢必會形成噪音,打擾到用戶。所以合理設置消息的通知頻率和渠道,以防早上體驗和效率上的損失。
如常見的郵件退訂管理,消息通知類型管理。 
Facebook通知設置

消息屏蔽功能在業務上應該屬於第一條中通知類型管理,當業務模塊較多且以前關聯分散時,或者開放平臺功能接入的第三方應用通知時,可以使用屏蔽功能。
facebook應用消息管理
新浪微博應用消息管理
使用隱私設置界定具體的接收權限、範圍等微博私信設置
使用黑名單可屏蔽指定用戶或關鍵詞的具體消息通知。
當用戶長時間不登錄或對消息不處理時,可以使用其餘渠道推送通知,已達到拉回的目的。 這個要與網站總體的拉回策略相結合。
例:Facebook的好友請求確認拉回郵件:
呃,若是你能看到這裏,真的很感謝,這篇文章斷斷續續更新了好幾天才完結,好多地方寫的不完整,還望包涵。
我原本想試圖去總結一套處理這種業務的邏輯方法,後來仍是放棄了,緣由是:
最後,若是你以爲本文對你有用,請分享給其餘人。(請註明出處哦)
——更新——
這個是我微博:@阿狗小明,我不常常更新因此不會騷擾到你,留下地址有問題能夠私信我一塊兒討論(歡迎單身妹子騷擾)。
——再次更新——
關於Feed與通知有不少共性,會在下一篇裏面提到,感謝小雅的建議。
http://www.withink.net/webnotice/