公司最近要在app中加入好友聊天模块,就让我先来定义这个模块要对外提供哪些功能,确定一个业务模块要对外提供哪些功能的最好方式就是找到该功能做的最好的app,看他的业务模块对外提供哪些方法,那么自然就从腾讯入手,分析聊天业务模块要对外提供的方法,或者说接口定义。
用图片来分析模块功能吧。
本章主要讲登陆界面和消息界面。
从登录界面可以看出需要用户登陆和用户注册两个功能,安卓联网都要在工作线程中完成,登陆结果和注册结果就需要接口回调的方法去告知,
/**
* 用户登录
* @param userName 用户名
* @param password 密码
* @param loginCallBack 回调接口
* @return
*/
public abstract void login(String userName,String password,LoginCallBack loginCallBack);
/**
* 用户注册
* @param userName 注册用户名
* @param password 密码
* @param registerCallBack 回调接口
* @return
*/
public abstract void register(String userName,String password,RegisterCallBack registerCallBack);
/**
* 注册结果回调接口
* @author yu
*
*/
public interface RegisterCallBack{
int REGISTER_RESULT_SUCCESS=0;
int REGISTER_RESULT_CONFLICT=1;
/**
* 注册结果回调接口
* @param result
*/
public void onRegisterResult(int result);
}
/**
* 登陆结果回调接口
* @author yu
*
*/
public interface LoginCallBack{
int RESULT_CODE_SUCCESS=0;
int RESULT_CODE_FAILURE=1;
public void onLoginResult(int result);
}
用户登陆成功后进入主界面,这里只分析和通讯相关的功能,与通讯无关的暂不讨论。
首先是消息会话界面,呈现之前会话的最后一条记录,如果有未读消息,显示未读消息,界面如下
消息界面可以分为两个部分,一部分是显示未读消息总数,以数字+红色圆边背景框显示,一部分是显示每个消息的详细信息,以listview显示,
详细信息包括
1,消息对象(好友/群)头像
2,消息对象(好友/群)名称
3,最后一条消息记录
4,最后一条消息时间
5,未读消息总数
这里就需要业务模块提供如下功能
/**
* 获取所有的会话实体
* @return
*/
public List<ConversationEntity> getAllConversation();
/**
* 获取未读消息总数
* @return
*/
public int getAllUnreadMsg();
会话实体类需要如下属性
private String imageUrl;//会话对象头像
private String name;//会话对象名称
private String lastMessage;//最后一条会话消息内容
private long lastMessageTime;//最后一条消息时间
private int unReadMegCount;//未读消息总数
如果用户在指定item上侧滑,会弹出如下侧滑菜单
从这个菜单可以看出业务模块要提供的功能
/**
* 清零会话列表集合中指定下标的未读消息
* (对应 标记已读)
* @param index
*/
public void clearUnReadMsg(int index);
/**
* 删除某个会话
* (对应 删除)
* @param index
*/
public void deleteConversation(int index);
置顶 功能需要在业务模块通过接口回调更新adapter,这块放在后面和新消息一块去将接口回调。
如果对文章的看法有什么问题,请在下方回复,我会及时解答处理。