複製鏈接
請複製以下鏈接發送給好友

通知系統

鎖定
通知系統(Notification System),顧名思義即通知信息的傳達處理系統。目的是為了讓用户獲得需要得到的消息及提醒並進行處理。
這裏的“需要得到”有兩層意思 [1]  1、用户彼此互動觸發的信息流(留言、評論或者回復、私信等)2、網站希望用户瞭解關注的信息(系統公告等)
中文名
通知系統
外文名
Notification System
應用領域
計算機等
應    用
web、郵件等
含    義
通知信息的傳達處理系統
目    的
讓用户獲得需要得到的消息

通知系統定義

通知系統,顧名思義即通知信息的傳達處理系統。目的是為了讓用户獲得需要得到的消息及提醒並進行處理。 這裏的“需要得到”有兩層意思 [1] 
1、用户彼此互動觸發的信息流(留言、評論或者回復、私信等)
2、網站希望用户瞭解關注的信息(系統公告等)
通知系統設計的原則可簡單的歸納為:
1、消息傳播效率最高(獲取、處理、信息傳達、用户反饋等效率)
2、避免產生騷擾(噪音、頻繁提示)

通知系統分類

不用的平台和產品本身由於對業務的需求不一樣,種類也是有區別的。 大致可分為以下幾種:
編號業務類型觸發對象備註
1評論用户對用户互動類的信息流提示
2回覆
3留言
4私信
5請求
如:添加好友(雙向確認)
6提醒系統對用户如:新增用户或@
7應用通知如:開放平台的第三方應用,本質上是系統通知
8系統通知如:系統公告、升級提示等

通知系統邏輯實現機制

通知的邏輯精簡後如下:
現對這幾個環節分開説明:

通知系統通知合併

通知在推送之前需要進行彙總合併,目的在於提高消息傳播處理效率;減少騷擾,降低噪音;平衡服務器壓力。
1)合併週期:
  1. 固定時間內的消息全部彙總(24小時內/30天等);
  2. 無固定時間(只要未處理/未讀即彙總)
當然一般都組合着用:合併24小時內未處理消息
2)分類合併
  1. 同種類進行合併(如n條留言合併為1條)
  2. 同一發起人合併(如張三給你發來的n條私信)
  3. 同一時間週期合併(如24小時共收到n條評論)

通知系統通知分發

通知按照規則彙總完成後,系統將其通過通知管道推送到用户,以便用户處理。
1)分發方式
分發方式與Feed系統類似,多采用Push方式,即在指定時間內主動推送給用户。部分特定類型需要用户請求(Pull)拉取未讀消息。 大部分通知優先推送未處理通知合併後的總數,已提醒用户已有新消息需要處理。用户點擊數字後再去服務端請求具體的消息內容。此種方式綜合考慮了成本、壓力和體驗。當然,某些極端情況下需要進行優化處理:如未讀消息超過1000,用户請求時先推送前50條或者放入cache中等。技術童鞋會有各種手段,這裏不做詳述。
2)分發頻率(時間)
分發時間主要根據消息的優先級來做區隔:
編號優先級分發時間備註
1實時需要用户立即知曉或處理
2小時/天/周不需要用户立即處理,彙總後發出
3固定週期提醒類或符合條件時觸發
備註:優先級會根據本身業務需求來確定,優先級的確定需要考慮防打擾。
3)分發管道
分發管道即消息通知的具體推送渠道,根據業務類型可以分為:WebApp、短信、郵件等

通知系統用户處理

根據前文提到的分發方式,對於通知的處理在邏輯上可以分為兩層:通知狀態的處理和通知內容的處理。
1)狀態的處理狹義的理解即為是否已讀(已處理)。
通常初始數字即為系統推送過來的未讀總量,用户點擊數字進入相關功能列表查閲後,讀取的動作完成,未讀數字相應減少。
有幾種情況需要變通處理:
  1. 若用户未讀信息較多(m=100),但第一頁列表只能顯示(n=10)條的話,那未讀數字即為m-n=90;
  2. 某些產品會將點擊等同於已讀。即用户只要點擊無論是否打開列表查看均認為已讀。 這樣的處理一般用於重要級別較低的消息。點擊即已讀可有效降低騷擾。
  3. 某些重要級別較高的消息已處理狀態可以定義為用户進行相關操作後才為已處理,而非查閲。 如用户進行評論、回覆、點擊忽略或點擊刪除等動作時才認為已處理。
2)內容的處理狹義的理解即為用户是否操作。
根據不同消息的種類和業務的需要,操作可分為:
  1. 處理:用户必須點擊功能鏈接進行處理。如:你的密碼過於簡單,點此進行修改;
  2. 回覆:如回覆私信,對評論進行回覆;
  3. 確認:對消息做出確認的反饋,如某些系統提示可設置”我已知道,不再提示”的選項;
  4. 忽略:用户進行忽略操作或不進行任何操作;
  5. 刪除:用户刪除本消息。
3)消息處理後的狀態需要統一。
消息需要標記是否已處理的狀態,且狀態在不同的終端是打通的。 如:用户在客户端對消息進行了查看,在web站點本消息應自動標記為已讀狀態。

通知系統通知回收

回收主要針對用户已處理消息的操作。
  1. 用户之間觸發的消息一般需要留檔保存。 如評論/回覆/留言/私信等。產品可提供選項詢問用户是否超過一定週期自動清理。
  2. 在部分產品中,還需要考慮功能的優先級。 如解除好友關係或加入黑名單後自動將刪除雙方的私信記錄。
  3. 系統觸發的消息一般設置一定的回收刪除時間。 如系統提醒、通知、公告等。過期後自動在產品裏刪除。物理上可以設置是否備份。
  4. 過期但用户未處理消息(用户長時間未登錄但收到他人的回覆)可以根據業務需求來處理。 如未讀的私信/評論/回覆永久保留等。重要未讀消息可嘗試二次推送或使用其他途徑(郵箱、APP、短信等)通知。

通知系統通知處理交互

注:具體的交互需要考慮本身業務特點和目標需求。特定業務可能需要強調,某些業務又需要考慮騷擾,故拋開具體情境本身談交互是無恥的。 這裏只針對一般的社區網站,描述一下個人所喜歡的交互方式。
1)、新消息到達時提醒交互
當新消息到達時,可以使用以下提醒方式
1.標題閃動
2.聲音提醒 新消息到達後自動觸發聲音
3.氣泡+數字
4.新消息浮層
5.彈窗提示
2)、通知處理
消息多采用當前觸發、即時處理類似“所見即所得”的交互方式。 
採用此方式的需要考慮:
  1. 消息通知位於全局導航,訪問任何頻道時都可保證及時收到新消息;
  2. 消息在浮層中處理完畢後,用户可繼續進行之前的操作,不至於造成打擾;
  3. 因導航面積有限,需對消息種類進行統一整理和規劃;(Facebook的分類為好友請求、私信、通知。)
  4. 提供歷史記錄(更多、全部消息)的入口(二級頁面)
  5. 標記已讀未讀狀態,處理好消息提醒數字的關係 

通知系統防騷擾

因消息本身業務性質,過多無用通知勢必會造成噪音,打擾到用户。因此合理設置消息的通知頻率和渠道,以防早上體驗和效率上的損失。
1)、提供通知頻率和渠道的管理功能
如常見的郵件退訂管理,消息通知類型管理。
Facebook通知設置
2)、增加屏蔽功能
消息屏蔽功能在業務上應該屬於第一條中通知類型管理,當業務模塊較多且之前關聯分散時,或者開放平台功能接入的第三方應用通知時,可使用屏蔽功能。
facebook應用消息管理
  
3)、結合權限體系
①、功能隱私設置
使用隱私設置界定具體的接收權限、範圍等
微博私信設置
②、結合黑名單功能
使用黑名單可屏蔽指定用户或關鍵詞的具體消息通知。

通知系統用户拉回

當用户長時間不登陸或對消息不處理時,可使用其他渠道推送通知,已達到拉回的目的。 這個要與網站整體的拉回策略相結合。

通知系統iOS通知系統

iOS中提供了2種推送通知
  • 本地推送通知(Local Notification) [2] 
  • 遠程推送通知(Remote Notification)
推送通知的作用
  • 可以讓不在前台運行的app,告知用户app內部發生了什麼事情
  • 推送通知的呈現效果總結
  • 用户接收的推送通知,都會展示在“通知中心”
  • 從屏幕頂部往下滑,就能調出“通知中心”
  • 顯示橫幅還是UIAlertView,取決於用户的設置
不同的呈現效果
  • 在屏幕頂部顯示一塊橫幅(用來顯示具體內容)
  • 在屏幕中間彈出一個UIAlertView(用來顯示具體內容)
  • 在鎖屏界面顯示一塊橫幅(鎖屏狀態下,顯示具體內容)
  • 更新app圖標的數字(説明新內容的數量)
  • 播放音效(提醒作用)
使用的幾個細節
  • 發出推送通知時,如果當前程序正運行在前台,那麼推送通知就不會被呈現出來
  • 點擊推送通知後,默認會自動打開發出推送通知的app
  • 不管app打開還是關閉,推送通知都能如期發出

通知系統詳細設計

設計
企業內部通常都有通知需要上傳下達,有時是臨時通知, [3]  比如通知“下午2點開會”,如果是每個部門電話通知比較煩瑣,而僅是通過電子郵件發送,則往往有部分人沒有及時地查看而導致錯過會議;有時是某個精神需要傳達,是一些文本文檔;另外一些時候則可能是部門之間交流的內部文件。為了防止員工工作時間閒聊和內部資料外泄,企業外網不開放,公共的即時聊天工具不適合這種場合的使用。而有些情況下,比如非工作時間,企業外網是開放的、允許員工使用的,員工在眾多的聊天工具中選擇幾種是很常見的情況。
桌面通知系統是以企業內部局域網為基礎進行設計的。它的目標是在企業內部建立即時通訊平台,方便通知的上傳下達,同時對幾種常用的公共聊天軟件進行集成,使它們有統一的外觀、配置,可以減少人們在不同聊天工具之間的切換,並限制公共聊天軟件的使用時間段。
桌面通知系統結構 桌面通知系統結構
主要功能模塊
UI模塊
桌面通知系統客户端,隨機器開機而自動起動;它的Ul(用户界面)仿照QQ聊天程序,不使用時,放置於系統托盤位置;若有企業內部消息時,消息窗口自動彈出,並將其設置為最前端窗口,強迫用户閲讀並確認後才能夠關閉,防止消息沒有被及時閲讀。
對於服務器端,界面很簡單,主要顯示出客户端發送消息內容,以及文件傳送的時間、位置等信息。
在Eclipse RCP中,所有的一切都是通過擴展點機制實現的,開發RCP的主要過程也就是嚮應用添加視圖、編輯器、透視圖、菜單、工具欄、上下文菜單等等的擴展的過程。其中注意遵循模塊化原則,按照功能、職責、以及模型和UI分離的原則將系統劃分成不同的模塊,同時要充分利用Eclipse提供的很多可重用的插件、擴展點、內置的Action、視圖、編輯器、首選項等。
消息管理模塊
消息分為兩類,一是指企業內部發送的消息,二是指集成聊天軟件的消息。
企業內部發送的消息,由系統本身進行管理。客户端用户名是部門名,由系統維護部門規定,整個部門的用户名均相同,防止個人利用桌面通知系統聊天。發送消息給某個部門時,該部門所有在線客户端均接收消息。利用Java提供的計時器類,桌面通知系統客户端消息窗口的新內容,每隔10分鐘自動存儲,減少意外斷電的損失。
由於公用即時通訊工具通訊協議各異,軟件升級更新週期短,桌面通知系統對於公用即時通訊工具,只是採用了簡單的調用方式集成,並未對其內容進行限制和管理,這樣可以簡化桌面通知系統的實現過程。因此,桌面通知系統中集成的即時通訊工具消息發送,使用聊天軟件原有的管理方式,系統並不對其干預,只是對其使用時段進行限制和管理。
文件管理模塊
為了減少服務器的負擔,加快傳輸速度,與消息發送不同,客户端的文件發送採用點對點傳輸。源客户端從服務器獲取目的客户端的IP地址,然後啓動新文件發送線程發送文件。由於採用了線程方式,文件傳送操作不影響客户端針對桌面通知系統的其它操作。
時間管理模塊
時間管理模塊,主要針對集成的聊天軟件上線時間進行管理。在系統維護部門規定工作時間內,除桌面通知系統外其它的即時通訊軟件均為灰色,即:不可用狀態。
數據管理模塊
本系統在服務器端建立了數據庫服務。服務器端數據庫包括部門信息、管理員權限信息、設置時間段信息、日誌管理等方面的內容。由於MySQL5.0免費版亦具有良好穩定的性能,並且安裝簡單、系統開銷少,桌面通知系統利用它完成數據信息管理工作。
安全管理模塊
由於桌面通知系統主要針對企業內網使用,所以其安全性相對於公用即時通訊工具具有天然的優勢。該系統主要採用客户端權限等級制來實現安全管理,即為不同的客户端設置不同的權限,限制客户端訪問消息和文件的權限,以達到保障內部資料安全的目的。
參考資料