Android_聊天软件_添加好友_与服务器交互

上一篇文章介绍了用户A向服务器发送添加B的请求,这篇文章介绍服务器通知用户B,以及用户B同意与否的操作。
好久没有更新文章,主要是前段时间花了2天时间帮别人画了点东西,还有就是充电了,主要是Service、Notification、Broadcast这些后台运行的知识。
其中Service有一条是,开启一个Service与服务器保持推送,开启广播接收BroadcastReceiver,重写OnReceive完成相应操作,并把广播终结掉。
被添加方B收到服务器发来的A的请求添加关系后的动作。
Android_聊天软件_添加好友_与服务器交互_第1张图片
界面提示,细节——如果点击了“新朋友”则Notification取消显示
Android_聊天软件_添加好友_与服务器交互_第2张图片
Android_聊天软件_添加好友_与服务器交互_第3张图片
”同意“”忽略“点击都是将信息封装成相应格式的JSON然后发送至服务器,然后服务器将信息推送至请求方A,因为客户端与有服务器维系关系的推送的Service,后台接收到信息后按Tag进行区分后,进行不同的动作,代码如下:

//添加好友
            if(tag.equals(BmobConfig.TAG_ADD_CONTACT)){     

                BmobInvitation message = ChatManage.getInstance(context).saveReceiveInvite(json, toId);
                if(currentUser!=null){//有登陆用户
                    if(toId.equals(currentUser.getObjectId())){
                        if (ehList.size() > 0) {// 有监听的时候,传递下去
                            for (EventListener handler : ehList)
                                handler.onAddUser(message);
                        }else{
                            showOtherNotify(context, message.getFromname(), toId,  message.getFromname()+"请求添加好友", NewFriendAdd.class);
                        }
                    }
                }
            }
            //好友同意添加
            else if(tag.equals(BmobConfig.TAG_ADD_AGREE)){
                String username = BmobJsonUtil.getString(jo, BmobConstant.PUSH_KEY_TARGETUSERNAME);
                //收到对方的同意请求之后,就得添加对方为好友--已默认添加同意方为好友,并保存到本地好友数据库
                BmobUserManager.getInstance(context).addContactAfterAgree(username, new FindListener() {

                    @Override
                    public void onError(int arg0, final String arg1) {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public void onSuccess(List arg0) {
                        // TODO Auto-generated method stub
                        //保存到内存中
                        CustomApplcation.getInstance().setContactList(CollectionUtils.list2map(BmobDB.create(context).getContactList()));
                    }
                });
                //显示通知
                showOtherNotify(context, username, toId,  username+"同意添加您为好友", Height_Chat_Frag.class);
                //创建一个临时验证会话--用于在会话界面形成初始会话
                BmobMsg.createAndSaveRecentAfterAgree(context, json);
            }

同意添加好友代码如下:

/** 同意对方的添加好友请求:此方法默认在添加成功之后:1、更新本地好友数据库,2、向请求方发生同意tag请求,3、保存该好友到本地好友库
      * @Title: agreeAddContact
      * @Description: TODO
      * @param  msg 好友请求
      * @param  updateCallback  
      * @return 
      * @throws
      */
    public void agreeAddContact(final BmobInvitation msg,final UpdateListener updateCallback){
        //添加好友
        addContact(msg.getFromname(), new UpdateListener() {

            @Override
            public void onSuccess() {
                // TODO Auto-generated method stub
                //更新本地请求好友
                BmobDB.create(context).updateAgreeMessage(msg.getFromname());
                //发送tag请求
                ChatManage.getInstance(context).sendTagMessage(BmobConfig.TAG_ADD_AGREE, msg.getFromid());
                //保存此好友到本地数据库中  
                BmobDB.create(context).saveContact(msg);
                updateCallback.onSuccess();
            }

            @Override
            public void onFailure(int arg0, final String arg1) {
                // TODO Auto-generated method stub
                updateCallback.onFailure(arg0, arg1);
            }
        });
    }

至此完成,聊天软件 用户添加 功能,下面介绍。聊天功能。

你可能感兴趣的:(Android)