IM撤回訊息-iOS客戶端實現
撤回端&&被撤回端
新增一種訊息型別:CallLogTypeRecall
新增兩種訊息狀態:CallLogStatusRecalling, CallLogStatusRecalled
在介面顯示時過濾掉CallLogStatusRecalling狀態的訊息,以及訊息型別為CallLogTypeRecall的訊息
CallLogStatusRecalled狀態的訊息顯示成撤回一條訊息的提示
撤回端
傳送一條撤回訊息型別的訊息,CallLogTypeRecall
訊息中包含需要被撤回訊息的唯一識別符號,讓被撤回端能找到這條訊息
撤回訊息傳送成功之後把需要被撤回的訊息的status標記為CallLogStatusRecalled
如果撤回訊息傳送失敗,彈框提示
被撤回端
收到CallLogTypeRecall訊息時,根據訊息中的唯一識別符號去尋找對應的訊息
1:如果訊息被找到了,把訊息的status置為CallLogStatusRecalled
2:如果訊息沒有被找到,根據唯一識別符號新建一條本地訊息,並且把status置為CallLogStatusRecalling(這時候介面上不會有任何變化),當收到那條需要被撤回當訊息時,就會查重到剛才新建的本地訊息,把status置為CallLogStatusRecalled(這時候在介面上會顯示對方撤回一條訊息),如果始終沒有收到,可以對CallLogStatusRecalling的狀態置之不理
剛開始接觸IM,第一次去實現撤回訊息
求指點
相關文章
- im客戶端生成訊息序列號演算法客戶端演算法
- Spring Boot 整合 WebSocket 實現服務端推送訊息到客戶端Spring BootWeb服務端客戶端
- 訊息中介軟體客戶端消費控制實踐客戶端
- springboot2整合websocket,實現服務端推送訊息到客戶端Spring BootWeb服務端客戶端
- Aeron訊息傳遞客戶端--Go版客戶端Go
- Vue實現騰訊視訊Mac客戶端VueMac客戶端
- 如何實現從 Redis 中訂閱訊息轉發到 WebSocket 客戶端RedisWeb客戶端
- 使用swoole作為MQTT客戶端並接收實現即時訊息推送MQQT客戶端
- 實現客戶端與服務端的HTTP通訊客戶端服務端HTTP
- WebSocket 實現伺服器訊息推送客戶端Web伺服器客戶端
- [JAVA]多人聊天室控制檯實現,服務端向所有客戶端下發訊息實現Java服務端客戶端
- iOS APNS推送遠端訊息 java後臺實現iOSJava
- 客戶端骨架屏實現客戶端
- Spring Boot+Socket實現與html頁面的長連線,客戶端給伺服器端發訊息,伺服器給客戶端輪詢傳送訊息,附案例原始碼Spring BootHTML客戶端伺服器原始碼
- TCP通訊客戶端和服務端簡單程式碼實現TCP客戶端服務端
- 仿UC客戶端的快速搜尋訊息通知效果客戶端
- 分散式訊息系統Kafka Java客戶端程式碼分散式KafkaJava客戶端
- jQuery實現客戶端CheckAll功能jQuery客戶端
- iOS逆向-客戶端認證iOS客戶端
- golang實現tcp客戶端服務端程式GolangTCP客戶端服務端
- Redis的Pub/Sub客戶端實現Redis客戶端
- 網頁SSH客戶端的實現網頁客戶端
- c#實現redis客戶端(一)C#Redis客戶端
- 使用Java客戶端傳送訊息和消費的應用Java客戶端
- iOS 訊息推送原理及實現DemoiOS
- Golang 實現客戶端與伺服器端UDP協議連線通訊Golang客戶端伺服器UDP協議
- Android實現Thrift服務端與客戶端Android服務端客戶端
- Nagios for Aix監控客戶端iOSAI客戶端
- IM客戶端Socks 5代理協議應用客戶端協議
- Go 實現簡易的 Redis 客戶端GoRedis客戶端
- FTP客戶端c程式碼功能實現FTP客戶端C程式
- Android-TCP客戶端的實現AndroidTCP客戶端
- 實現客戶端加密,後臺解密薦客戶端加密解密
- 現代IM系統中訊息推送和儲存架構的實現架構
- AgileEAS.NET SOA 中介軟體平臺.Net Socket通訊框架-簡單例子-實現簡單的服務端客戶端訊息應答框架單例服務端客戶端
- iOS基於Socket.io即時通訊IM實現,WebRTC實現視訊通話iOSWeb
- [譯]如何在Service Worker和網頁客戶端之間傳送訊息網頁客戶端
- IM開發乾貨分享:淺談IM系統中離線訊息、歷史訊息的最佳實踐