易生活(八)-APP--即时通信业务逻辑

版权声明:本文为博主高远原创文章,转载请注明出处:http://blog.csdn.net/wgyscsf https://blog.csdn.net/wgyscsf/article/details/51712484

概述

  • 易生活的及时通信业务主要用于社交模块的聊天模块、购物模块的买家和卖家交谈模块、确认订单以及购买成功自动通知卖家和买家(系统消息),以及其它。第三方支持:融云IM。

效果图

业务流程图

这里写图片描述

业务逻辑处理

  • 客户端连接融云服务器的处理:我们知道在即时通信之前,需要做连接融云服务器的处理,需要融云确定用户的信息。按照一般的逻辑,我们都会把连接融云服务器放到用户登录成功之后去处理,因为这是验证用户信息的入口。但是,我们登录模块的设计并不是这样,而是如果用户之前有过登录,直接默认登录,跳过了“验证身份”这个模块,但是,我们会在“个人中心”的“OnResume()”方法中去偏好设置中验证用户的信息,这样处理如果不涉及到及时通信是没有任何问题的。对于连接融云服务器,这样处理就会出现问题,原因:当我没有登录去点击社交模块的用户头像(尝试去聊天),这时会跳转到登录页面。登录成功之后,登录页面会”finsh()”掉,直接返回到了社交模块,并没有返回到”个人中心”模块,不能完成”连接融云”的操作,从而不能进行聊天。这一块处理暂时没有想到很好的解决办法,我们就尝试使用了最”笨”的方法,在所有登录的入口去做”连接融云”的操作,这一块会涉及到三个地方:个人中心、验证码登录、密码登录。总结:保证所有验证用户信息的地方去连接融云操作即可!
  • 系统消息的处理:当用户“确认订单”或者“付款成功”买卖双方会收到类似“您有订单生成,请去我的订单查看!”、“您已经付款成功,请去我的订单查看!”。这一块的处理,主要需要在用户“确认订单”或者“付款成功”及时在服务端监听,然后根据用户id和商家id去调用融云IM的相关接口去发送系统消息,通知买卖双方。用到的核心API: ApiHttpClient.publishSystemMessage(key, secret,ParamUtils.IM_SYS_ID, toIds, new TxtMessage("消息内容'"), "pushContent","pushData",FormatType.json);
  • 用户头像、昵称的处理:这一块在用户登录成功之后,立刻去用户信息表中获取头像、昵称等信息;另外一方面,在和用户聊天时,及时更新对方信息,因为这个时候我也可以拿去对方的用户信息。用到的核心方法:

                RongIM.setUserInfoProvider(new RongIM.UserInfoProvider() {
                    @Override
                    public UserInfo getUserInfo(String userId) {
                        return new UserInfo(user.getId() + "", user.getNickname() != null ? user.getNickname() : user.getPhone(), user.getHeadimg()!=null?Uri.parse(user.getHeadimg()):Uri.parse("http://o71uhokgf.bkt.clouddn.com/im_ic_default_head.png"));//根据 userId 去你的用户系统里查询对应的用户信息返回给融云 SDK。
                    }
    
                }, true);
    
  • 用户消息数量的小红点的处理:BadgeView【github】

存在的问题

  1. 当初设计的“私信”、“商家消息”、“系统消息”分类列出,没有实现。原因:这个可以实现,但是需要自己维护分类消息的列表,并且不能显示历史消息列表(也是要靠自己维护)以及通知“小红点”的显示。思路是很清晰的,但是由于项目开发期太短,没有实现这个功能。
  2. 即时通信用户信息的详细化描述、个人资料等。
  3. 买卖通信没有实现,原因:商家版没有做,并且商家ID是不能使用的。因为和顾客表id设计的是一样的,全部都是自增长,如果使用id作为标记用户信息是会出现冲突的,所以还需要设计一个可以唯一标记商家信息的标记。

猜你喜欢

转载自blog.csdn.net/wgyscsf/article/details/51712484
今日推荐