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

番外篇:
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服务的,所以需要在官网管理后台的消息推送->推送设置->应用包名中填写应用的正确包名。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值