解除好友关系步骤

由于融云没有维护好友关系,所以同一个appKey下,都能聊,所以当解除好友关系的时候,必须要自己去处理相应的逻辑,那么怎么去处理呢,现在我有两个思路
  1. 当还未是好友时候,不能给相应的聊天入口,当是好友的时候,就给予好友关系的入口。
  2. 上面的这些处理相应的简单一些,难点在于怎样在解除好友关系的时候怎么去处理相应的逻辑
思路一:
当我们解除好友关系的时候,将本地的对话列表删除,删掉相应的历史记录。并且将被删除人拉成黑名单,这样就可以实现相应的解除好友功能,如果重新加上好友,就将相应的好友成员从黑名单中拉出来
   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>() {
            @Override
            public void onSuccess(List 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;
            }
        });
    }
    

你可能感兴趣的:(解除好友关系步骤)