開發一款即時通信App,從這幾步開始

歡迎你們前往騰訊雲+社區,獲取更多騰訊海量技術實踐乾貨哦~javascript

本文由 騰訊雲視頻發表於 雲+社區專欄

img

關注公衆號「騰訊雲視頻」,一鍵獲取 技術乾貨 | 優惠活動 | 視頻方案java

「晚上去哪吃飯啊?」android

桌面上來自一條晚上約飯的對話框——QQ。ios

忽然靈光一現,新出了優化的IM SDK,能夠嘗試着搭建一個相似QQ的即時通信軟件小程序

01性能優化

註冊帳號微信

騰訊雲官網網絡

註冊騰訊雲帳號,也可使用QQ或者微信直接登錄session

02架構

建立應用

選擇【產品】→【雲通訊】→【當即使用】→【建立應用接入】

img

img

img

03

SDK接入

一、集成SDK

【下載雲通訊SDK】包括IMSDK(雲通訊SDK)、TUIKit(基礎界面庫)

二、生成UserSig

在【基礎配置】下載公私鑰,使用【開發輔助工具】生成測試用戶的UserSig

img

img

三、初始化SDK

Android代碼

//應用啓動時(通常爲Application的onCreate)配置UIKit的基本配置,具體參數說明參考API
    BaseUIKitConfigs uiKitConfigs = new BaseUIKitConfigs();
    uiKitConfigs.appCacheDir(Constants.APP_DIR_CACHE).audioRecordMaxTime(120)
                .disableAudioPlayedStatusIcon(true).disableAutoPlayNextAudio(true)
                .ChatProcessor(new PojoChatProcessor());
    ILiveUIKit.init(this, uiKitConfigs);

四、建立登錄界面

Android代碼

public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //實例化登陸面板
        mLoginPanel = new LoginView(this);
        //將登陸組件設置爲登陸Activity的基本佈局,也可在佈局文件xml中引用LoginView
        setContentView((View) mLoginPanel);
        //添加登陸組件的動做事件,登陸點擊與註冊點擊
        mLoginPanel.setLoginEvent(new ILoginEvent() {
            @Override
            public void onLoginClick(View view, String userName, String password) {
                //點擊登陸時業務本身的登陸邏輯
            }

            @Override
            public void onRegisterClick(View view, String userName, String password) {
                //點擊註冊時業務本身的註冊邏輯
            }
        });
    }

界面實圖

img

img

五、建立會話列表

佈局文件

<!--在會話列表佈局文件中引用會話列表組件,也可參考登陸面板在代碼中設置-->
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".main.MainActivity">

    <com.tencent.qcloud.uikit.business.session.view.SessionPanel
        android:id="@+id/session_panel"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

Android代碼

/**
* 獲取會話列表組件,初始化默認設置
* 會話組件的默認設置已經實現了會話數據的拉取與處理(與IMSDK關聯完成相關邏輯)
* 開發者如爲特殊要求直接初始化默認設置便可
* 另會話組件提供的可擴展的事件和UI處理,具體可參考API文檔
*/
sessionPanel = baseView.findViewById(R.id.session_panel);
sessionPanel.initDefault();

界面實圖

img

img

六、建立聊天界面

Android代碼

//從佈局文件中獲取聊天面板組件
chatPanel = mBaseView.findViewById(R.id.chat_panel);
/*
* 會話組件的默認設置已經實現了會話數據的拉取與處理(與IMSDK關聯完成相關邏輯)
* 開發者如無特殊要求直接初始化默認設置便可
* 另聊天面板組件提供的可擴展的事件和UI處理,具體可參考API文檔
*/
chatPanel.initDefault();
//生成聊天基本信息,如聊天對象的暱稱,頭像,最後一頁聊天信息等
BaseChatInfo info = getChatInfo();
//設置基本信息,以便用戶進入該頁面時能即時展現相關信息
chatPanel.setBaseChatInfo(info);

界面實圖

img

img

img

img

七、羣管理

Android代碼

//從佈局文件中獲羣管理面板組件
GroupManagerPanel groupManagerPanel = mBaseView.findViewById(R.id.group_manager_panel);
/*
* 羣管理組件的默認設置已經實現了羣管理相關的邏輯也操做(與IMSDK關聯完成相關邏輯)
* 開發者如無特殊要求直接初始化默認設置便可
* 另聊羣管理組件提供的可擴展的事件和UI處理,具體可參考API文檔
*/
groupManagerPanel.initDefault();

界面實圖

img

img

經過以上幾個步驟,一個擁有單聊、羣聊的即時通信App就這樣完成了

再次崇拜本身的動手能力,一天就能搭建完成一個APP,啦啦啦啦啦啦~

img

最後,瞭解一下通過優化後的新版本IM SDK

IM SDK

體積優化

1.android so體積<1M

2.ios體積增量<2M

性能優化

1.線程裁剪(單線程架構,減小線程切換和線程同步開支)

2.cpu佔用優化(線程裁剪、代碼邏輯優化)

消息到達率

深度優化業務邏輯層、會話策略層和網絡層,實現四個九(99.99%)的消息到達率

數據監控

用戶級數據監控,實時跟蹤和統計用戶行爲

  1. dau/mau
  2. 功能統計
  3. 用戶分佈

海外布點

增長富媒體消息海外布點,爲圖片視頻語音文件的上傳下載提速

版本兼容

與老版本兼容,實現無縫切換

UIKit插件

一套多功能自定義界面庫,實現會話列表、聊天、聯繫人、羣管理、彈幕等界面,實現客戶一天接入

問答
請問小程序即時通信如何接入發送消息?
相關閱讀
IM即時通信實現原理
iOS 即時通信 + 仿微信聊天框架 + 源碼
開發一款即時通信App,從這幾步開始
【每日課程推薦】機器學習實戰!快速入門在線廣告業務及CTR相應知識

此文已由做者受權騰訊雲+社區發佈,更多原文請點擊

搜索關注公衆號「雲加社區」,第一時間獲取技術乾貨,關注後回覆1024 送你一份技術課程大禮包!

海量技術實踐經驗,盡在雲加社區

相關文章
相關標籤/搜索