聊天IM的時間戳記顯示規則

來源:互聯網
上載者:User

標籤:

======================================================

以下規則是在體驗操作後,推測出來的規則,可能存在一些不準確的表述

======================================================

 

參考基準

當處於正在聊天時,聊天內容比聊天時間更為重要,盡量避免時間和發送狀態對聊天內容的幹擾,簡化介面,僅保留最核心的資訊:寄件者、發送內容。

 

Badge(未讀訊息數量)

當訊息數量達到三位元時(也即訊息數量 > 99),顯示…而非數字,緩解/減輕強迫症患者的心理壓力

 

時間戳記顯示

時間戳記由用戶端自行處理,時間戳記的顯示根據不同的情境進行顯示,可參考下面幾種典型的使用情境,但無論怎麼顯示,訊息之間超過5分鐘都需要顯示時間戳記了。

 

 

###點擊聊天列表,進入聊天詳情時(單聊或群聊)

1)擷取資料

擷取最近最多20條資料(20條為一頁資料,超過20條時只取最近的20條,少於20條時有多少取多少)

2)顯示資料

擷取第一條訊息的接收時間,然後將這個時間戳記插入到介面並記錄下來(假設使用變數lastShowTimeStamp進行記錄),然後將訊息按時間戳記(從小到大排序,老訊息在前新訊息在後),追加到介面中,但需要注意時間戳記的顯示規則。

迴圈遍曆每條訊息時,需要判斷該訊息的接收時間與最後一次顯示時間戳記的時間間隔,當大於5分鐘(300ms)時則再追加一條時間戳記,同時更新lastShowTimeStamp的值。

 

###時間戳記的顯示規則

一天內的訊息顯示為:“昨天 時:分”

二天至七天內顯示為:“星期X 時:分”

當大於7天時顯示為:“YYYY年X月X日時:分”

時、分不足二位時,前面用0補齊,月、日不足二位時不補位。如:2016年7月13日 09:22,注意計算天數是要算天,不能拿毫秒進行比較。否則昨天上午的訊息,在今天下午看時將會變成“星期X 09:10”,正確的應該是“昨天 09:10”

樣本如下:

 

 

###聊天ing

當收到新訊息時,判斷當前收到的訊息與lastShowTimeStamp之間的間隔,大於5分鐘時就顯示時間戳記,同時更新lastShowTimeStamp的值為當前新訊息收到的時間戳記。

會出現一種情況,當5分鐘內,訊息很頻繁而導致訊息量達到100條,那麼這一千條資料中間是沒有任何時間戳記的。如果退出聊天介面再重新進入時,參考第一條規則。

樣本:

 

###當向下拉取訊息時

向上拉取訊息時,擷取向上的20條資料(一頁,不足一頁時有多少取多少),然後根據第一條的規則來顯示。

先顯示時間戳記,然後判斷每一條時間戳記與上一次顯示的時間戳記進行比較,間隔大於5分鐘時顯示新的時間戳記,唯一與第一條規則不同的是,此時不要更新lastShowTimeStamp的值。因為lastShowTimeStamp的值是用來判斷新訊息的,老訊息需要判斷的話使用一個臨時變數記錄即可,拉取並顯示完一頁資料就丟棄掉了。

會出現一種情況,就是向上拉取訊息時,你會遇到同一分鐘內發送的訊息各有一個時間戳記,而且時間戳記是相同的。出現的原因是訊息分屬在二頁內了

樣本如下:

 

 

###刪除單條訊息時

刪除一條訊息時,如果被刪除的訊息上一條是時間戳記,而下一條不是一條訊息記錄時就將時間戳記一併刪除掉。

這樣會導致一種情況,時間戳記被刪除掉之後,lastShowTimeStamp並沒有進行更新,如果此時再接收到新訊息時,它不會再顯示時間戳記,直到新訊息超過5分鐘的間隔才重新顯示時間戳記並更新lastShowTimeStamp的值。刪除完訊息後檢查當前訊息數,少於一頁時自動再載入上一頁資料,直至沒有訊息可供載入。

樣本如下(第一張圖是正常的,第二張圖是非正常的,退出聊天重新進入或等5分鐘之後便可恢複正常):

 

 

###大量刪除訊息時

規則與單刪類似,唯一的不同的,當選中某一行時需要向上、向下遍曆。

向上遍曆時:

如果上一條訊息是未選中狀態,中止向上尋找;

如果上一條訊息是選中狀態,繼續向上不斷尋找,直到找到未選中訊息(中止)、找到時間戳記(記錄下該時間戳記的位置,然後向下遍曆);

向下遍曆時:

如果下一條訊息是未選中狀態,記錄的時間戳記位置清除,中止向下尋找;

如果下一條訊息是選中狀態,繼續向下不斷尋找,直到找到未選中訊息(中止並清除)、找到時間戳記(成功找到,也就是向前是一個時間戳記,向後也是一個時間戳記或是最後一條訊息也記錄向上尋找到的時間戳記)

註:大量刪除時,一次最多能選擇刪除100條資料。訊息刪除後,需要判斷當前訊息數量是否夠一頁(20條),不夠就再向上載入一頁資料(20條);

在點擊刪除時,一次性進行刪除操作,避免遍曆影響效能。

樣本如下:

聊天IM的時間戳記顯示規則

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.