最近在整合融雲 sdk 的時候,碰到了乙個跟未讀數有關的問題,現象是這樣的:
比如我在其中 web 端已經清除了某個會話的未讀數然後退出,再換個裝置登入,這個時候未讀數還有,並沒有清除掉,我就納悶了,我明明已經清除了會話未讀數的呀,怎麼換個裝置登入就又有了呢?
肯定是融雲的 bug ,所以我立馬就提了乙個工單,暗想:哈哈,給我逮著了乙個 bug (有點理解測試人員的快樂**了)
可是事與願違,跟融雲技術人員溝通後才發現是我這邊需要做多端同步未讀數同步的操作
原因是換端登入,融雲這邊有訊息補償機制,即換端重新登入時,獲取當天收發的所有訊息,在收訊息的過程中,經過 sdk 內部邏輯處理,會累加會話未讀數且存在 localstorage 中1、呼叫 conversation.read() 清除未讀數。所以,如果不同步的話就會出現多端未讀數不一致的情況
2、清除成功後傳送 rc:srsmsg 型別訊息進行未讀數同步。
3、其他端接受到 rc:srsmsg 型別訊息,掉用 conversation.read() 方法進行本地未讀數清除
看**:
清除端
// 清除未讀數
let conversation = im.conversation.
get();
conversation.
read()
.then
(function
(count)})
.then
(function
(message));});
同步端// 其他端在訊息監聽中接收到同步訊息後,呼叫清除未讀數做更新處理
// 收到同步訊息進行未讀數清除操作 呼叫 conversation.getunreadcount() 成功後不需要再在傳送 `rc:srsmsg` 型別訊息。
let conversation = im.conversation.
get();
conversation.
read()
.then
(function
(count)
);
也可以參考融雲的官方文件: 融雲即時通訊SDK整合 通知檢查
文件 這裡我總結了一下接入融雲sdk後,關於本地通知接收不順利的排查.大致可以分為這麼幾條 1.是否設定了 setonreceivemessagelistener 監聽,並且 onreceived 方法返回的為 true。rongim.setonreceivemessagelistener new ...
Android整合融雲實現聊天功能
rongim.init this 二 用token傳送請求連線融雲伺服器 一般在登入的時候,介面會返回對應使用者的token,我們在連線融雲伺服器 private void initry override public void onsuccess string s override public ...
整合融雲 IM 問題總結
最近專案裡用到了 im 相關能力,並且之前也有了解融雲,所以直接就用了,下面自己總結一些注意事項,在這些點上花了一丟丟時間,在此記錄下 2 連線融雲的時候,需要乙個 token,這個 token 是通過融雲的 server 獲取的,並且只能通過自己的 server 呼叫,否則有安全問題,除錯時可以用...