上一篇文章介绍了用户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>() {
@Override
public void onError(int arg0, final String arg1) {
// TODO Auto-generated method stub
}
@Override
public 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() {
@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);
}
});
}
至此完成,聊天软件 用户添加 功能,下面介绍。聊天功能。