由于融云沒有維護好友關系姊扔,所以同一個appKey下鳖枕,都能聊魄梯,所以當解除好友關系的時候,必須要自己去處理相應的邏輯宾符,那么怎么去處理呢酿秸,現(xiàn)在我有兩個思路
- 當還未是好友時候,不能給相應的聊天入口魏烫,當是好友的時候辣苏,就給予好友關系的入口。
- 上面的這些處理相應的簡單一些哄褒,難點在于怎樣在解除好友關系的時候怎么去處理相應的邏輯
思路一:
當我們解除好友關系的時候稀蟋,將本地的對話列表刪除,刪掉相應的歷史記錄呐赡。并且將被刪除人拉成黑名單退客,這樣就可以實現(xiàn)相應的解除好友功能,如果重新加上好友链嘀,就將相應的好友成員從黑名單中拉出來
if (isChecked) {
/**
* 將某個用戶加到黑名單中萌狂。
*
* @param userId 用戶 Id。
* @param callback 加到黑名單回調(diào)怀泊。
*/
RongIM.getInstance().addToBlacklist(member_id, null);
} else {
/**
* 將個某用戶從黑名單中移出茫藏。
*
* @param userId 用戶 Id。
* @param callback 移除黑名單回調(diào)霹琼。
*/
RongIM.getInstance().removeFromBlacklist(member_id, null);
思路二:
解除好友關系的時候刷允,刪除本地列表和記錄冤留,刪除歷史記錄,同時向相應的被刪除發(fā)送通知树灶,被刪除人進入相應的對話界面的時候拉取歷史記錄纤怒,如果最后一條出現(xiàn)相應的通知字段相對應,將好友關系重置天通,此時發(fā)不出相應的信息泊窘,同時應該設置接收監(jiān)聽器,防止被刪除人像寒,停留在對話頁面烘豹,一旦接收到相應的通知,也重置好友關系诺祸。在這之前也應該在通過好友關系的時候向該好友發(fā)送一條消息携悯,這樣就防止了在刪除后再次通過好友請求,被刪除人最后一條仍然為被刪除的那條消息筷笨,導致發(fā)送不了消息憔鬼。
/**
* 獲取歷史對話通過這種歷史對話,判斷相應的標記胃夏,實現(xiàn)閱后即焚
* "RC:TxtMsg",
*/
private void getHistoryMessage() {
RongIMClient.getInstance().getHistoryMessages(mConversationType, mTargetId, -1, 100, new RongIMClient.ResultCallback<List<Message>>() {
@Override
public void onSuccess(List<Message> messages) {
if (null != messages && messages.size() > 0) {
if (messages.get(0).getContent() instanceof InformationNotificationMessage && messages.get(0).getObjectName().equals("RC:InfoNtf")) {
String message = ((InformationNotificationMessage) messages.get(0).getContent()).getMessage();
if (message.indexOf("已與你解除好友關系") != -1) {
isFriend = false; // 解除了好友關系
}
}
}
}
}
@Override
public void onError(RongIMClient.ErrorCode errorCode) {
}
});
}
/**
* 監(jiān)聽接受到的數(shù)據(jù)
*/
private void initReceiveConversationNew() {
RongIM.setOnReceiveMessageListener(new RongIMClient.OnReceiveMessageListener() {
@Override
public boolean onReceived(Message message, int i) {
if(null != message && message.getContent() instanceof InformationNotificationMessage && message.getObjectName().equals("RC:InfoNtf")) {
InformationNotificationMessage infoMsg = (InformationNotificationMessage) message.getContent();
String msg = infoMsg.getMessage();
if (msg.indexOf("已與你解除好友關系") != -1) {
isFriend = false; // 解除了好友關系
}
}
return false;
}
});
}