版本升级说明
更新时间: 2024/07/26 13:39:23
本文主要介绍 UIKit 升级的相关问题和说明。这里以 9.2.10 升级到 9.4.1 为例进行说明。
UIKit 升级主要是升级 Kit 层代码和 Common 库代码,具体请参考下文的Kit 层和 Common 库升级。升级之后 IM SDK 依赖版本也升级到 V9.8.0。
前言
自 9.4.0 开始,UIKit 将圈组模块和 IM 能力进行拆分,因此在源码依赖中,您可以移除对圈组模块的依赖。
在您的工程的 build.grale
中,移除对圈组的依赖,同时可以删除圈组模块的代码(删除圈组相关的所有内容即可),如下所示:
implementation(project(":contactkit-ui"))
implementation(project(":conversationkit-ui"))
// implementation(project(":qchatkit-ui")) 移除圈组依赖
implementation(project(":teamkit-ui"))
implementation(project(":chatkit-ui"))
implementation(project(":searchkit-ui"))
Kit层和Common库升级
以 Chatkit-UI
模块为例,在该模块的 build.gradle
文件中将以下两个库的版本进行升级。
api("com.netease.yunxin.kit.chat:chatkit:9.4.1")
api("com.netease.yunxin.kit.common:common-ui:1.1.15")
其他模块,contactKit-ui
、conversationkit-ui
、teamkit-ui
、searchkit-ui
中统一将对应的 Kit 库和 Common 库升级到相同的版本。
ChatKit-UI模块改动
-
WatchImageActivity
、WatchVideoActivity
、ChatBaseFragment
、ChatMessageAudioControl
中修改 import 相关内容:- 改动前引用:
import com.netease.yunxin.kit.chatkit.storage.ExternalStorage; import com.netease.yunxin.kit.chatkit.storage.StorageType; import com.netease.yunxin.kit.chatkit.storage.StorageUtil;
- 改动后引用:
import com.netease.yunxin.kit.common.utils.storage.ExternalStorage; import com.netease.yunxin.kit.common.utils.storage.StorageType; import com.netease.yunxin.kit.common.utils.storage.StorageUtil;
- 改动前引用:
-
在
ChatBaseViewModel
中增加消息发送监听器。您可以直接使用 ChatBaseViewModel.java 文件进行替换,以下为
ChatKit-UI
模块中具体修改的内容。-
添加消息发送监听
private final EventObserver<List<IMMessageInfo>> msgSendingObserver = new EventObserver<List<IMMessageInfo>>() { @Override public void onEvent(@Nullable List<IMMessageInfo> event) { ALog.d( LIB_TAG, TAG, "msg sending change -->> " + (event == null ? "null" : event.size())); if (event != null && event.size() > 0) { postMessageSend(event.get(0), false); } } };
-
注册和取消注册消息接受监听
public void registerObservers() { //新增 ChatObserverRepo.registerMessageSendingObserve(mSessionId, msgSendingObserver); } public void unregisterObservers() { //新增 ChatObserverRepo.unregisterMessageSendingObserve(mSessionId, msgSendingObserver); }
-
修改
postMessageSend
方法,将sendMessageLiveData.postValue
修改为setValue
private void postMessageSend(IMMessageInfo message, boolean resend) { ALog.d(LIB_TAG, TAG, "postMessageSend"); sendMessageFetchResult.setLoadStatus(LoadStatus.Loading); if (resend) { sendMessageFetchResult.setType(FetchResult.FetchType.Update); } else { sendMessageFetchResult.setType(FetchResult.FetchType.Add); } sendMessageFetchResult.setData(new ChatMessageBean(message)); //改动点 sendMessageLiveData.setValue(sendMessageFetchResult); }
-
在
sendMessage
中,删除对onMessageSend
的调用public void sendMessage(IMMessage message, boolean resend, boolean needSendMessage) { if (message != null) { ALog.d(LIB_TAG, TAG, "sendMessage:" + message.getUuid()); if (SettingRepo.getShowReadStatus()) { message.setMsgAck(); } // if (needSendMessage) { // onMessageSend(message, resend); // } ChatRepo.sendMessage(message, resend, null); } }
-
在
replyMessage
方法中删除对onMessageSend
的调用public void replyMessage(IMMessage message, IMMessage replyMsg, boolean resend) { ALog.d(LIB_TAG, TAG, "replyMessage,message" + (message == null ? "null" : message.getUuid())); message.setThreadOption(replyMsg); message.setMsgAck(); // onMessageSend(message, resend); ChatRepo.replyMessage(message, replyMsg, resend, null); }
-
删除
onMessageSend
方法
-
-
ChatBaseFragment
代码调整,将observer
改为observeForever
。- 改动前:
viewModel .getSendMessageLiveData() .observe( getViewLifecycleOwner(), chatMessageBeanFetchResult -> { ... });
- 改动后:
viewModel .getSendMessageLiveData() .observeForever( chatMessageBeanFetchResult -> { ... });
- 改动前:
ConversationKit-ui模块改动
PopItemFactory
中的依赖修改:
-
替换前:
import com.netease.yunxin.kit.corekit.im.utils.TransHelper;
-
替换后:
import com.netease.yunxin.kit.common.ui.photo.TransHelper;
TeamKit-ui模块改动
-
在目录
com.netease.yunxin.kit.teamkit.ui.utils
中,增加以下三个列: -
在资源文件
Strings.xml
增加新的字符://中文 <string name="group_team">讨论组</string> <string name="advanced_team">高级群</string> //英文 <string name="group_team">Temp Group</string> <string name="advanced_team">Group</string>
-
在
TeamMemberListAdapter
中替换引用:- 替换前:
import com.netease.yunxin.kit.teamkit.utils.FilterUtils;
- 替换后:
import com.netease.yunxin.kit.teamkit.ui.utils.FilterUtils;
- 替换前: