SDK 2.x至3.0升级指南linux
使用升级替换脚本api
可使用SDK中的自动替换脚本替换大部分原有API的变更, 有部分须要手动更新的请见下面的说明。架构
./replace.sh your_source_folderui
注意对象
该脚本能够容许在linux,mac及cygwin环境下并须要可执行权限开发
若是在mac下,须要用户用brew或其余方式安装gsedget
API大体变更介绍it
3.0中的核心类为EMClient类,经过emclient类能够获取到chatmanager、groupmanager、contactmanager、chatroommanager等manager对象,此外和这些manager不太相关的方法基本EMClient类里面,如登陆、设置链接监听等方法。message里的成员变量的获取都变成getXXX获取io
从2.x升级到3.0,大部分的变更只须要改变api名称就能够了,可是少部分地方由于架构等缘由须要一些稍复杂的改动。 这里先列出api大概的变更列表:ast
消息接发对于之前经过conversation.addConversation()方法,而后在adapter中发送消息的开发者来讲变更稍微有点大,这里再单独列出来修改方法: 首先把conversation.addMessage(message)删除掉,而后调用sendmessage方法,在messageadapter显示消息的地方,再也不调用sendmessage方法,adapter里只是根据消息的状态显示相应的ui便可,经过调用message.setMessageStatusCallback(messageReceiveCallback),监听消息是否发送成功等,这里以发送文字消息做为示例、
protected void sendMessage(EMMessage message){
if(chatFragmentListener != null){
//设置扩展属性
chatFragmentListener.onSetMessageAttributes(message);
}
// 若是是群聊,设置chattype,默认是单聊
if (chatType == EaseConstant.CHATTYPE_GROUP){
message.setChatType(ChatType.GroupChat);
}else if(chatType == EaseConstant.CHATTYPE_CHATROOM){
message.setChatType(ChatType.ChatRoom);
}
//发送消息
EMClient.getInstance().chatManager().sendMessage(message);
//刷新ui
messageList.refreshSelectLast();
}
在显示消息的adpater中,根据消息状态显示相应ui便可
protected void handleTextMessage() {
if (message.direct() == EMMessage.Direct.SEND) {
setMessageSendCallback();
switch (message.status()) {
case CREATE:
progressBar.setVisibility(View.GONE);
statusView.setVisibility(View.VISIBLE);
break;
case SUCCESS: // 发送成功
progressBar.setVisibility(View.GONE);
statusView.setVisibility(View.GONE);
break;
case FAIL: // 发送失败
progressBar.setVisibility(View.GONE);
statusView.setVisibility(View.VISIBLE);
break;
case INPROGRESS: // 发送中
progressBar.setVisibility(View.VISIBLE);
statusView.setVisibility(View.GONE);
break;
default:
break;
}
}else{
if(!message.isAcked() && message.getChatType() == ChatType.Chat){
try {
EMClient.getInstance().chatManager().ackMessageRead(message.getFrom(), message.getMsgId());
} catch (HyphenateException e) {
e.printStackTrace();
}
}
}
}