上一篇文章介绍了用户A向服务器发送添加B的请求,这篇文章介绍服务器通知用户B,以及用户B同意与否的操作。
好久没有更新文章,主要是前段时间花了2天时间帮别人画了点东西,还有就是充电了,主要是Service、Notification、Broadcast这些后台运行的知识。
其中Service有一条是,开启一个Service与服务器保持推送,开启广播接收BroadcastReceiver,重写OnReceive完成相应操作,并把广播终结掉。
被添加方B收到服务器发来的A的请求添加关系后的动作。
界面提示,细节——如果点击了“新朋友”则Notification取消显示
”同意“”忽略“点击都是将信息封装成相应格式的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<MyUser>() {@Overridepublic void onError(int arg0, final String arg1) {// TODO Auto-generated method stub}@Overridepublic void onSuccess(List<MyUser> 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() {@Overridepublic 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();}@Overridepublic void onFailure(int arg0, final String arg1) {// TODO Auto-generated method stubupdateCallback.onFailure(arg0, arg1);}});}
至此完成,聊天软件 用户添加 功能,下面介绍。聊天功能。