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();
}
}
}
}