由于融云沒(méi)有維護(hù)好友關(guān)系,所以同一個(gè)appKey下,都能聊,所以當(dāng)解除好友關(guān)系的時(shí)候,必須要自己去處理相應(yīng)的邏輯,那么怎么去處理呢,現(xiàn)在我有兩個(gè)思路
- 當(dāng)還未是好友時(shí)候,不能給相應(yīng)的聊天入口,當(dāng)是好友的時(shí)候,就給予好友關(guān)系的入口。
- 上面的這些處理相應(yīng)的簡(jiǎn)單一些,難點(diǎn)在于怎樣在解除好友關(guān)系的時(shí)候怎么去處理相應(yīng)的邏輯
思路一:
當(dāng)我們解除好友關(guān)系的時(shí)候,將本地的對(duì)話列表刪除,刪掉相應(yīng)的歷史記錄。并且將被刪除人拉成黑名單,這樣就可以實(shí)現(xiàn)相應(yīng)的解除好友功能,如果重新加上好友,就將相應(yīng)的好友成員從黑名單中拉出來(lái)
if (isChecked) {
/**
* 將某個(gè)用戶加到黑名單中。
*
* @param userId 用戶 Id。
* @param callback 加到黑名單回調(diào)。
*/
RongIM.getInstance().addToBlacklist(member_id, null);
} else {
/**
* 將個(gè)某用戶從黑名單中移出。
*
* @param userId 用戶 Id。
* @param callback 移除黑名單回調(diào)。
*/
RongIM.getInstance().removeFromBlacklist(member_id, null);
思路二:
解除好友關(guān)系的時(shí)候,刪除本地列表和記錄,刪除歷史記錄,同時(shí)向相應(yīng)的被刪除發(fā)送通知,被刪除人進(jìn)入相應(yīng)的對(duì)話界面的時(shí)候拉取歷史記錄,如果最后一條出現(xiàn)相應(yīng)的通知字段相對(duì)應(yīng),將好友關(guān)系重置,此時(shí)發(fā)不出相應(yīng)的信息,同時(shí)應(yīng)該設(shè)置接收監(jiān)聽器,防止被刪除人,停留在對(duì)話頁(yè)面,一旦接收到相應(yīng)的通知,也重置好友關(guān)系。在這之前也應(yīng)該在通過(guò)好友關(guān)系的時(shí)候向該好友發(fā)送一條消息,這樣就防止了在刪除后再次通過(guò)好友請(qǐng)求,被刪除人最后一條仍然為被刪除的那條消息,導(dǎo)致發(fā)送不了消息。
/**
* 獲取歷史對(duì)話通過(guò)這種歷史對(duì)話,判斷相應(yīng)的標(biāo)記,實(shí)現(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("已與你解除好友關(guān)系") != -1) {
isFriend = false; // 解除了好友關(guān)系
}
}
}
}
}
@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("已與你解除好友關(guān)系") != -1) {
isFriend = false; // 解除了好友關(guān)系
}
}
return false;
}
});
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。