由于融云没有维护好友关系,所以同一个appKey下,都能聊,所以当解除好友关系的时候,必须要自己去处理相应的逻辑,那么怎么去处理呢,现在我有两个思路
- 当还未是好友时候,不能给相应的聊天入口,当是好友的时候,就给予好友关系的入口。
- 上面的这些处理相应的简单一些,难点在于怎样在解除好友关系的时候怎么去处理相应的逻辑
思路一:
当我们解除好友关系的时候,将本地的对话列表删除,删掉相应的历史记录。并且将被删除人拉成黑名单,这样就可以实现相应的解除好友功能,如果重新加上好友,就将相应的好友成员从黑名单中拉出来
if (isChecked) {
/**
* 将某个用户加到黑名单中。
*
* @param userId 用户 Id。
* @param callback 加到黑名单回调。
*/
RongIM.getInstance().addToBlacklist(member_id, null);
} else {
/**
* 将个某用户从黑名单中移出。
*
* @param userId 用户 Id。
* @param callback 移除黑名单回调。
*/
RongIM.getInstance().removeFromBlacklist(member_id, null);
思路二:
解除好友关系的时候,删除本地列表和记录,删除历史记录,同时向相应的被删除发送通知,被删除人进入相应的对话界面的时候拉取历史记录,如果最后一条出现相应的通知字段相对应,将好友关系重置,此时发不出相应的信息,同时应该设置接收监听器,防止被删除人,停留在对话页面,一旦接收到相应的通知,也重置好友关系。在这之前也应该在通过好友关系的时候向该好友发送一条消息,这样就防止了在删除后再次通过好友请求,被删除人最后一条仍然为被删除的那条消息,导致发送不了消息。
/**
* 获取历史对话通过这种历史对话,判断相应的标记,实现阅后即焚
* "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) {
}
});
}
/**
* 监听接受到的数据
*/
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;
}
});
}
网友评论