1. 程式人生 > 其它 >關於android引入騰訊即時通訊im

關於android引入騰訊即時通訊im

技術標籤:android第三方工具踩坑集合移動開發

Android引入騰訊im即時通訊


一、執行官方demo遇到的問題?

在執行官方demo時,可能出現提示某個外掛不存在,而大概率時因為整個demo中,並沒有使用到該外掛;
1、當第一次進入時,demo很大可能性,會引入企業版的依賴,但是,專案中並不存在;

在這裡插入圖片描述當你正常執行專案時,可能會報如下錯誤;

2、 解決辦法
在這裡插入圖片描述2.1:如果第一次進來載入entetprise的時候,把它x掉
2.2:在build.app時,改為如下,並不直接依賴com.5.1.1
api ‘com.tencent.liteav:LiteAVSDK_TRTC:latest.release’

implementation project(’:tuikit’)
implementation project(’:tuikit-live’)

二、騰訊im使用步驟

1.引入依賴庫

1.1:android建議引入含ui板塊的依賴,可以省時省力
 implemetion com.tencent.imsdk:tuikit:5.1.2

2.與騰訊im鑑權並生成聊天列表

2.1:在自己的邏輯中,拿到userid,並請求後端的生成userSing的介面;拿到 userSig; 2.2:該使用者開始登陸
  TUIKit.login(userId, userSig, new IUIKitCallBack
() { @Override public void onSuccess(Object data) { System.out.println("登陸成功"); } @Override public void onError(String module, int errCode, String errMsg) { Log.i(TAG, "imLogin errorCode = "
+ errCode + ", errorInfo = " + errMsg); } });
2.3:登陸成功後;首先生成聊天列表;前提時,你有聊天記錄 2.3.1:頁面佈局:
 <com.tencent.qcloud.tim.uikit.modules.conversation.ConversationLayout
        android:id="@+id/conversation_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clickable="false"
        android:focusable="false" />
2.3.2:初始化聊天列表 根據你的頁面型別,activity或者fragment;類似findviewbyId
baseview.conversationLayout.initDefault();
2.3.3:聊天某一項的監聽,可以複製demo;如**置頂聊天或者刪除聊天**

3、聊天

3.1:聊天介面佈局:
   <com.tencent.qcloud.tim.uikit.modules.chat.ChatLayout
        android:id="@+id/chat_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
3.2:聊天邏輯
   private ChatInfo mChatInfo;
   mChatInfo = new ChatInfo();
   //對方與騰訊im鑑權的欄位
   mChatInfo.setId(userId);
   //聊天型別:單聊或者群組
   mChatInfo.setType(V2TIMConversation.V2TIM_C2C);
   //聊天標題:可以自己根據自己實際運用來
   mChatInfo.setChatName(title);
   //需要聊天的基本資訊
   ChianBinding.chatLayout.setChatInfo(mChatInfo);
   //獲取聊天檔案後,進行預設ui和互動初始化
   ChianBinding.chatLayout.initDefault();

3.3、到這裡為止,你已經可以實現聊天與檢視聊天列表了;

3.3.1:其實在騰訊demo的邏輯中,並不存在好友或者非好友的情況,兩者均可以聊天,但是,需要你在管理後臺配置;開啟允許非好友聊天

3.3.2:在聊天中,可能會出現在聊天記錄中出現轉圈圈的情況,其實,這個問題出現在,你並沒有拿到對方在騰訊im中請求網路生成usersing的欄位,也就是上方的userid;

4、遇到的問題

4.1:聊天記錄時而存在時而消失

解決辦法:
4.1.1:在你需要的模組,進行登陸鑑權,首先做是否登陸的判斷

private void getConversionList() {
      int i = V2TIMManager.getInstance().getLoginStatus();
      if (i == V2TIM_STATUS_LOGINED) {
          System.out.println("已登入");
          LogInAgain(userId);
      }
      if (i == V2TIM_STATUS_LOGINING) {
          System.out.println("登入中");
      }
      if (i == V2TIM_STATUS_LOGOUT) {
          System.out.println("無登入");
          IMLOGING(userId);
      }
  }
4.1.2 :如果已經登陸
/**
   * 直接登陸,無需校驗;避免重複登陸
   *
   * @param user
   */
  private void LogInAgain(String user) {

      TIMManager.getInstance().autoLogin(user, new TIMCallBack() {
          @Override
          public void onError(int code, String desc) {

          }

          @Override
          public void onSuccess() {
              System.out.println("二次登陸成功");
          }
      });
  }
4.1.2:如果是未登陸狀態
private void creatCommuntionList(String userSig) {

       TUIKit.login(userId, userSig, new IUIKitCallBack() {
           @Override
           public void onSuccess(Object data) {
               System.out.println("律師端登陸成功");
               getCommuntation();
           }

           @Override
           public void onError(String module, int errCode, String errMsg) {
               Log.i(TAG, "imLogin errorCode = " + errCode + ", errorInfo = " + errMsg);
           }
       });
   }

4.1.3:為什麼上一步有getCommuntation()方法,原因時,聊天監聽無響應,建議在activity處理邏輯如下:也就是在你初始化頁面時,不需要在單獨初始化聊天介面,直接在getCommuntation()方法中完成初始化,聊天,刪除、置頂等一系列操作
//聊天記錄列表
CommunicationBinding.conversationLayout.getTitleBar().setVisibility(View.GONE);
CommunicationBinding.conversationLayout.initDefault();
//這個也是刪除、置頂操作
        initPopMenuAction();
CommunicationBinding.conversationLayout.getConversationList().setOnItemLongClickListener(new ConversationListLayout.OnItemLongClickListener() {
           @Override
           public void OnItemLongClick(View view, int position, ConversationInfo conversationInfo) {
               //這個是刪除、置頂操作
               startPopShow(view, position, conversationInfo);
           }
       });
    
CommunicationBinding.conversationLayout.getConversationList().setOnItemClickListener(new ConversationListLayout.OnItemClickListener() {
           @Override
           public void onItemClick(View view, int position, ConversationInfo messageInfo) {
             //與該使用者聊天,你可以在messageInfo,拿到該類關鍵資訊,並傳到聊天介面
           }
       });
4.1.4:聊天傳照片時報錯:降低版本,gradle配置
  compileSdkVersion: 29,
  buildToolsVersion: "29.0.3",
  minSdkVersion    : 21,
  targetSdkVersion : 28,

5、總結

我不過是站在巨人的肩膀上,任重而道遠。後期會完整的鑽研。少走彎路,提供工作效率。有什麼問題也可以私信我,非常樂意解答。