版本升级说明

更新时间: 2024/03/15 18:26:20

本文主要介绍 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-uiconversationkit-uiteamkit-uisearchkit-ui 中统一将对应的 Kit 库和 Common 库升级到相同的版本。

ChatKit-UI模块改动

  1. WatchImageActivityWatchVideoActivityChatBaseFragmentChatMessageAudioControl 中修改 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;
      
  2. 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 方法

  3. 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模块改动

  1. 在目录 com.netease.yunxin.kit.teamkit.ui.utils 中,增加以下三个列:

  2. 在资源文件 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>
    
  3. 替换 TeamUIService.javaTeamUpdateIconActivity.java 文件。

  4. TeamMemberListAdapter 中替换引用:

    • 替换前:
      import com.netease.yunxin.kit.teamkit.utils.FilterUtils;
      
    • 替换后:
      import com.netease.yunxin.kit.teamkit.ui.utils.FilterUtils;
      
此文档是否对你有帮助?
有帮助
去反馈
  • 前言
  • Kit层和Common库升级
  • ChatKit-UI模块改动
  • ConversationKit-ui模块改动
  • TeamKit-ui模块改动