##下载
- Leanchat-android
- Leanchat-ios
- Leanchat-cloud-code,Leanchat 云代码后端
用 LeanCloud 实时通信 SDK做的沟通工具 Leanchat
##当前特性
###单聊
- 消息支持文字,图片
- 接受回执,有发送失败、发送成功,已接收状态。
- 本地保存消息记录
- 统一的服务器时间戳
###群聊
- 邀请群成员
- 踢人
- 建群
- 退群
用到的依赖包,都在libs中:
- AVOS Cloud SDK,基础模块和实时通信模块即可。
- AdventureCloud ,相关的服务器代码
- 申请应用,替换App.java中的appId,appKey
- fork AdventureCloud,部署到自己的云代码中去
- 建表
AddRequest
- 申请百度地图key,替换掉AndroidMenifest.xml 中的baidu key
###v1.1.2
- 新的一套录音、音量显示UI
- 增加检查更新功能
- 限制了只能竖屏
- 取消自定义的dialog
- 修复点击顶部栏通知进入错误的聊天室的bug
- 可能修复fragment ui重叠的bug
###v1.1.3
- 使用新的聊天协议,以便和ios版互通
- 将 AndroidManifest.xml 文件的 百度map key改为 生产环境的key
- 改版本号、版本名字
- 将App.java 中的debug设为false,打开发送崩溃日志的选项
- 上传apk文件到fir.im/leanchat,以及后台数据库(用于自动更新)
- 写更新日志
总的来说,四步加聊天功能:
- open session(打开一个会话)
- watch peerIds(关注一些人,会收到相应的上线下线通知)
- send message
- handle received message
final String selfId = getPeerId(curUser);
List<String> peerIds = new LinkedList<String>();
Session session = SessionManager.getInstance(selfId);
session.open(selfId, peerIds);
String selfId = getPeerId(User.curUser());
Session session = SessionManager.getInstance(selfId);
session.watchPeers(peerIds);
List<String> ids = new ArrayList<String>();
ids.add(getPeerId(chatUser));
String selfId = getPeerId(curUser)
Session session = SessionManager.getInstance(selfId);
session.sendMessage(json, ids);
接受消息继承一个类就可以了,这里能做到非常细粒度的控制又很方便,
public class Receiver extends AVMessageReceiver {
//session打开后调用
@Override
public void onSessionOpen(Context context, Session session) {
}
//因断网session暂停时调用
@Override
public void onSessionPaused(Context context, Session session) {
}
//网络重新连接上时调用
@Override
public void onSessionResumed(Context context, Session session) {
}
//接受消息
@Override
public void onMessage(Context context, Session session, String msg, String fromPeerId) {
}
//消息发送成功
@Override
public void onMessageSent(Context context, Session session, String msg, List<String> receivers) {
}
//消息发送失败
@Override
public void onMessageFailure(Context context, Session session, String msg, List<String> receivers) {
}
//上线通知
@Override
public void onStatusOnline(Context context, Session session, List<String> peerIds) {
}
//下线通知
@Override
public void onStatusOffline(Context context, Session session, List<String> peerIds) {
}
//出错时调用
@Override
public void onError(Context context, Session session, Throwable e) {
}
}
###Document
###API