番外篇:
1.在做界面时,总遇到输入键盘不能自己收起,导致需要手动收起键盘,使操作多一步,现在说一下我的流程,
检查键盘是否显示,代码如下:

private Context mContext;private View view;public InPutMethodManag(Context mContext,View view) {super();this.mContext = mContext;this.view = view;}/*** 查看输入键盘状态* @return false 输入法 关闭  否则打开* */public boolean IsOpen(){InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);return imm.isActive();}/*** 关闭弹出的输入法* */public void closeInput(){InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);imm.hideSoftInputFromWindow(view.getWindowToken(), 0);}

2.再次遇到这个问题,用Dialog时,Context出现问题,我在Adapter里调用dialog.show() 报错,因为我给Adapter传送的上下文用的是getApplicationContext()换成.this;就可以了,以后但凡用到Context时,我决定用.this。以防再遇到这问题,但是记得之前看过一个关于Context的文章,结果给忘了。。。。

言归正传:
前一篇文章完成查找好友与界面显示问题,这篇文章主要完成用户点击“添加”按钮后客户端与服务器的交互问题,属于后端处理。我认为流程图如下:

先介绍第1步,A向服务器发送添加B请求,我按BMOB官方资料处理,
首先 获取用户B的objectId —— 用户的唯一标示符

private void getTargetUserInstallId(String objectId,FindListener<BmobChatUser> findcallback) {BmobQuery<BmobChatUser> query = new BmobQuery<BmobChatUser>();query.addWhereEqualTo("objectId", objectId);query.findObjects(globalContext, findcallback);}

然后 确定用户B存在后,将“tag 消息类型” 用户信息 封装成JSON

public static BmobMsg createTagSendMsg(Context context,String tag, String targetId,BmobChatUser currentUser){BmobChatUser user = BmobUserManager.getInstance(context).getCurrentUser();BmobMsg msg = new BmobMsg(tag, targetId,user.getObjectId(), user.getUsername(), user.getAvatar(), user.getNick(), String.valueOf(BmobUtils.getTimeStamp()),BmobConfig.INVITE_ADD_NO_VALIDATION);return msg;}

最后 将封装的JSON数据 根据设备类型推送消息到指定平台 (根据BMOB官方)

private void send(BmobChatUser user, JSONObject json,PushListener pushCallback) {String installationId = user.getInstallId();String deviceType = user.getDeviceType();BmobQuery<BmobInstallation> query = BmobInstallation.getQuery();if (deviceType != null && deviceType.equals("ios")) {query.addWhereEqualTo("deviceToken", installationId);} else {query.addWhereEqualTo("installationId", installationId);}bmobPush.setQuery(query);bmobPush.pushMessage(json, pushCallback);}

至此完成了第1步,用户A向服务器发送添加B请求。
接下来完成服务器向B发送推送消息,介绍第二步:

BmobIM内部集成了BmobPush服务的,所以需要在官网管理后台的消息推送->推送设置->应用包名中填写应用的正确包名。

Android_聊天软件_加好友_与服务器交互相关推荐

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

    上一篇文章介绍了用户A向服务器发送添加B的请求,这篇文章介绍服务器通知用户B,以及用户B同意与否的操作. 好久没有更新文章,主要是前段时间花了2天时间帮别人画了点东西,还有就是充电了,主要是Servi ...

  2. java 操作鼠标实现qq加好友_易语言通过按键模拟的方式实现QQ后台加人加群的代码...

    DLL命令表 .版本 2 .DLL命令 GetModuleHandle, 整数型, "kernel32", "GetModuleHandleA" .参数 lpM ...

  3. 英雄联盟怎么解除小窗口_英雄联盟手游怎么加好友_英雄联盟手游怎么加好友一起玩_资讯...

    英雄联盟手游是腾讯联合英雄联盟开发商拳头开发的英雄联盟手游.不仅能够高度还原端游的经典操作和竞技体验,也具有非常多创新的元素,对于英雄联盟的全球生态布局具有重要意义.英雄联盟手游游戏中有非常多的英雄可 ...

  4. 随时随地跟任何QQ用户聊天,不用加好友也行

    机器必须安装qq 2005,如果未运行qq会提示你是否启动qq,如果开着qq将打开聊天窗口: 具体点就是这句: http://wpa.qq.com/msgrd?V=1&Uin=对方号码& ...

  5. python 实战之模仿开发QQ聊天软件(三)TCP/IP服务器与客户端建设

    无论是p2p还是c/s还是b/s,只要用到通讯,必然是要用到今天写的这个. python+MYSQL 在pycharm中的使用 TCP/IP是网络软件最核心的部分,缺少这个你只能当做单机游戏玩. TC ...

  6. 悟空qq通讯录加好友

    这款软件批量操作加好友,可以日加上千好友. 如果加的人精准的话,一天1000好友,随便买什么都能够赚的不错的收入. 如果按照市场上的粉丝价格来看的话,一个粉丝最低是1元左右,贵点的几块.几十块. 一般 ...

  7. 中油即时通信电脑版_一文看懂云视频会议与即时聊天软件的差别

    进入互联网时代,便捷.高效的云视频会议受到中小企业的青睐,人们通过租赁云视频会议账号,即可在视频会议室.个人电脑.智能手机上发起远程视频会议.不过随着5G等通信网络的普及,人们基于即时聊天软件进行视频 ...

  8. 机器人聊天软件c#_聊天机器人_c#应用

     用 .net 研发 msn 聊天机器人 _c# 应用 写在前面: 我不是研发人员,不是高手,就是自己比较爱玩.在技术上,没有什 么喜欢摸索的精神,而是喜欢投机取巧.在这篇文章里,你也不能 &quo ...

  9. jq 点击按钮跳转到微信_实现点击复制微信号并自动打开微信加好友

    原地址:https://www.xuewangzhan.net/jquery/21100.html 复制按钮xyz2018 点击复制 clipboard.on('success', function( ...

最新文章

  1. 第五章 Spring进阶-注解方式实现AOP(1)
  2. spring mvc异常统一处理(ControllerAdvice注解)
  3. 怎么用python做表格-怎么用python画表格?
  4. Day7 - 面向对象编程进阶及其他相关
  5. 微信阅读原文直接打开浏览器_微信打开网址添加在浏览器中打开提示
  6. 网络安全比赛理论答题(一)
  7. L1-011 A-B (20 分)(c语言实现)
  8. Gateway网关-路由的过滤器配置
  9. java的几种对象(PO,VO,DAO,BO,POJO)解释
  10. 自我审视记录本_春天重新审视战略模式
  11. Ubuntu安装之python开发
  12. 微信开发h5支付功能,配置单价和商品信息无法更新问题解决方法!
  13. python爬取贴吧图片_Python爬取贴吧多页图片
  14. 【CF1324E】Sleeping Schedule(dp)
  15. Datalogic 得利捷推出QuickScan™ QW2500系列二维扫描枪和Matrix™ 320 系列新机型
  16. QQ群导出群成员名单
  17. CentOS7.6 部署 Snipe-it 资产管理系统
  18. C语言实现贪吃蛇(四)----游戏存档读档(文件操作)
  19. linux nginx配置81端口用于访问web81
  20. python策略模式的应用_策略模式-Python四种实现方式

热门文章

  1. 【npm】npm start 修改启动端口的不同方式
  2. 怎么在浏览器网站前添加图标(图片)
  3. C++ constexper
  4. 奥拓排队机linux说明书_奥拓排队机AC2009 河南 郑州 聚融 无线自助排队
  5. matlab之保存gif动图
  6. 蓝桥杯嵌入式第十三届省赛真题1
  7. php写入文本乱码,php写入txt乱码
  8. FPGA实战2-数码管实验verilog
  9. web服务器和后端语言的关系
  10. python代码雨屏保_python写的屏保程序