Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >开发一款即时通讯App,从这几步开始

开发一款即时通讯App,从这几步开始

作者头像
腾讯云音视频
修改于 2018-09-12 12:00:20
修改于 2018-09-12 12:00:20
3.5K10
代码可运行
举报
文章被收录于专栏:音视频咖音视频咖
运行总次数:0
代码可运行

关注公众号“腾讯云视频”,一键获取 技术干货 | 优惠活动 | 视频方案

“晚上去哪吃饭啊?”

桌面上来自一条晚上约饭的对话框——QQ。

突然灵光一现,新出了优化的IM SDK,可以尝试着搭建一个类似QQ的即时通讯软件

01

注册账号

腾讯云官网

注册腾讯云账号,也可以使用QQ或者微信直接登陆

02

创建应用

选择【产品】→【云通信】→【立即使用】→【创建应用接入】

03

SDK接入

1、集成SDK

【下载云通信SDK】包括IMSDK(云通信SDK)、TUIKit(基础界面库)

2、生成UserSig

在【基础配置】下载公私钥,使用【开发辅助工具】生成测试用户的UserSig

3、初始化SDK

Android代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 //应用启动时(一般为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);

4、创建登陆界面

Android代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 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) {
                //点击注册时业务自己的注册逻辑
            }
        });
    }

界面实图

5、创建会话列表

布局文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <!--在会话列表布局文件中引用会话列表组件,也可参考登录面板在代码中设置-->
<?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代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 /**
* 获取会话列表组件,初始化默认设置
* 会话组件的默认设置已经实现了会话数据的拉取与处理(与IMSDK关联完成相关逻辑)
* 开发者如为特殊要求直接初始化默认设置即可
* 另会话组件提供的可扩展的事件和UI处理,具体可参考API文档
*/
sessionPanel = baseView.findViewById(R.id.session_panel);
sessionPanel.initDefault();

界面实图

6、创建聊天界面

Android代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//从布局文件中获取聊天面板组件
chatPanel = mBaseView.findViewById(R.id.chat_panel);
/*
* 会话组件的默认设置已经实现了会话数据的拉取与处理(与IMSDK关联完成相关逻辑)
* 开发者如无特殊要求直接初始化默认设置即可
* 另聊天面板组件提供的可扩展的事件和UI处理,具体可参考API文档
*/
chatPanel.initDefault();
//生成聊天基本信息,如聊天对象的昵称,头像,最后一页聊天信息等
BaseChatInfo info = getChatInfo();
//设置基本信息,以便用户进入该页面时能即时展示相关信息
chatPanel.setBaseChatInfo(info);

界面实图

7、群管理

Android代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//从布局文件中获群管理面板组件
GroupManagerPanel groupManagerPanel = mBaseView.findViewById(R.id.group_manager_panel);
/*
* 群管理组件的默认设置已经实现了群管理相关的逻辑也操作(与IMSDK关联完成相关逻辑)
* 开发者如无特殊要求直接初始化默认设置即可
* 另聊群管理组件提供的可扩展的事件和UI处理,具体可参考API文档
*/
groupManagerPanel.initDefault();

界面实图

通过以上几个步骤,一个拥有单聊、群聊的即时通讯App就这样完成了

再次崇拜自己的动手能力,一天就能搭建完成一个APP,啦啦啦啦啦啦~

最后,了解一下经过优化后的新版本IM SDK

IM SDK

体积优化

1.android so体积<1M

2.ios体积增量<2M

性能优化

1.线程裁剪(单线程架构,减少线程切换和线程同步开支)

2.cpu占用优化(线程裁剪、代码逻辑优化)

消息到达率

深度优化业务逻辑层、会话策略层和网络层,实现四个九(99.99%)的消息到达率

数据监控

用户级数据监控,实时跟踪和统计用户行为

  1. dau/mau
  2. 功能统计
  3. 用户分布

海外布点

增加富媒体消息海外布点,为图片视频语音文件的上传下载提速

版本兼容

与老版本兼容,实现无缝切换

UIKit插件

一套多功能自定义界面库,实现会话列表、聊天、联系人、群管理、弹幕等界面,实现客户一天接入

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云音视频 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
ERROR: Failed to resolve: com.tencent.imsdk:tuikit:4.2.10报错原因可以告知一下吗?找不到相关资料
ERROR: Failed to resolve: com.tencent.imsdk:tuikit:4.2.10报错原因可以告知一下吗?找不到相关资料
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
开发一款即时通讯App,从这几步开始
640.gif “晚上去哪吃饭啊?” 桌面上来自一条晚上约饭的对话框——QQ。 突然灵光一现,新出了优化的IM SDK,可以尝试着搭建一个类似QQ的即时通讯软件 image.png 腾讯云官网 注册腾讯云账号,也可以使用QQ或者微信直接登陆 image.png 选择【产品】→【云通信】→【立即使用】→【创建应用接入】 image.png image.png image.png image.png 1、集成SDK 【下载云通信SDK】包括IMSDK(云通信SDK)、TUIKit(基础界面库)
腾讯云通信团队
2018/09/12
4K2
微信小程序即时通讯开发记录(结合通讯云IM)
安装完依赖以后在项目目录的utils目录下创建tencentIM目录,用于存放关于即时通讯IM相关的js文件。
IT工作者
2022/02/22
6.1K1
从0到1搭建视频通话系统,我1天就搞定了
最近被老大分配了一个任务,他打开微信视频聊天,发起多人视频,指着功能界面说,“你看我们的产品也是有多人会议的场景,我们也加一个这样的功能,也不用很复杂,就仿照微信或者QQ的多人视频做一个出来,能实时视频通话,这个应该也不难吧,给你一个礼拜搞定,可以吗?” 我的内心在想这TM要涉及视频采集、编码、传输、解码、视频渲染,要有稳定的后台音视频传输,就光搭建后台就要老命了,这尼玛怎么搞,临走老大又补了一句,"哦,我们这里再加一个亮点,可以在视频界面发送文本消息,拓展下聊天功能",这时我的内心已经崩溃。
腾讯云音视频
2018/07/27
2.8K2
从0到1搭建视频通话系统,我1天就搞定了
【谷歌官方文档】1.1 建立第一个APP
本小节介绍如何使用Android Studio或者是SDK Tools中的命令行来创建一个新的项目。
吴延宝
2019/08/09
2.5K0
【谷歌官方文档】1.1 建立第一个APP
Android开发之简单登录界面
用户界面基础 Android系统的四大组件分别是活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)、内容提供器(Content Provider)。 其中,活动算是一个程序的门面,活动通过onCreate()方法来对用户界面(UI)进行初始化。而用户界面的创建则分为静态和动态两种方式: 静态方式即以XML布局文件来定义用户界面,通过XML布局文件中的相关属性进行控制,我将使用这种方式来实现简单的登录界面。 动态方式是指通过Java代码来开发用户界面,动态地
taoli
2022/09/27
6630
Android开发之简单登录界面
[Android技术专题]应用开发进阶必经之路之性能优化(上)
性能优化在一款产品的迭代过程中非常重要;程序实现了功能、还原产品原型只能保证程序能用,但如果要让用户更愿意使用,产品得好用。试想一下如果你开发的产品启动慢、页面显示需要长时间转圈加载、页面切换卡顿、黑白屏、用一会机器就发烫、耗内存、OOM、程序切换到后台后占用内存无法释放......,这些问题就像正在玩游戏时弹出提示框这类糟糕的用户体验一样让用户恼火,如果用户不得不使用你的产品,可能还会一直忍受;但如果有很多同类竞品,糟糕的用户体验会大大影响留存率。有时候产品在市场上的表现差,真不能全怪产品和运营,程序体验问题也是很大一部分原因。
open
2020/03/19
7300
[Android技术专题]应用开发进阶必经之路之性能优化(上)
一款基于Material Desgin设计的APP
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/50413625
Hankkin
2018/09/06
7620
一款基于Material Desgin设计的APP
Android快速集成融云
1、IMKit 集成了会话界面,并且提供了丰富的自定义功能,我们推荐首次接触融云的客户直接使用 IMKit 来快速集成和开发。
CatEatFish
2020/07/09
1.2K0
Android快速集成融云
开源即时通讯IM框架MobileIMSDK的Uniapp端开发快速入门
(JackJiang 使用的版本号如下图所示,为了方便直接引用工程,建议你也使用此版或较新版本)
JackJiang
2023/05/18
6010
开源即时通讯IM框架MobileIMSDK的Uniapp端开发快速入门
一对一直播源码开发,表情面板无缝切换的实现
在一对一直播源码使用过程中,有时会出现软键盘切换闪屏问题,就是当切换表情的时候屏幕会跳动,因此要对一对一直播源码表情面板无缝切换进行优化。
云豹科技程序员
2021/06/28
5370
Android开发笔记(七十四)布局文件优化
布局优化中常常用到include/merge标签,include的含义类似C代码中的include,意思是直接把指定布局片段包含进当前的布局文件。include适用于多个布局文件中存在相同的xml片段,比如说相同的标题栏、相同的广告栏、相同的进度栏等等。 include的用法很简单,只有下面一句话:
aqi00
2019/01/18
1.2K0
【Jetpack】Navigation 导航组件 ① ( Navigation 引入 | Navigation 特点 | Navigation 重要组件 | Navigation 使用流程 )
Android 开发中 , 最常用的 UI 架构 就是 使用一个 Activity 嵌套多个 Fragment , 这就需要 对 Fragment 进行管理 ;
韩曙亮
2023/10/11
1.1K0
【Jetpack】Navigation 导航组件 ① ( Navigation 引入 | Navigation 特点 | Navigation 重要组件 | Navigation 使用流程 )
Translucent System Bars-4.4新特性
该特性是在Android 4.4 KITKAT版本(API_19)中引入的新特性。
小小工匠
2021/08/16
4540
Android布局优化:include 、merge、ViewStub的详细总结
在开发Android布局时,我们常将一些通用的视图提取到一个单独的layout文件中,然后使用<include>标签在需要使用的其他layout布局文件中加载进来,比如我们自己App导航栏等。这样,便于对相同视图内容进行统一的控制管理,提高布局重用性。
Android技术干货分享
2019/06/11
2.2K0
Android布局优化:include 、merge、ViewStub的详细总结
Android中基于监听的事件处理
上一期我们学习了Android中的事件处理,也详细学习了Android中基于监听的事件处理,同时学会了匿名内部类形式,那么本期继续来学习其他四种事件监听器。 一、使用内部类作为事件监听器 和上面的匿名内部类不同,使用内部类可以在当前类中复用该监听器类;因为监听器类是外部类的内部类,所以可以自由访问外部类的所有界面组件,这也是内部类的两个优势。 接下来通过一个简单的示例程序来学习Android使用内部类作为事件监听器。 继续使用WidgetSample工程,在app/main/res
分享达人秀
2018/02/02
1.6K0
Android中基于监听的事件处理
开源即时通讯IM框架MobileIMSDK的H5端开发快速入门
如下图所示:所有 SDK 接口均由/mobileimsdk/mobileimsdk-client-sdk.js 提供。,接口设计跟MobileIMSDK 的APP版一样,均为高内聚和低侵入的回调方式传入SDK处理逻辑,无需(也不建议)开发者直接修改sdk级代码。
JackJiang
2023/06/15
4520
开源即时通讯IM框架MobileIMSDK的H5端开发快速入门
【Jetpack】Navigation 导航组件 ⑤ ( NavigationUI 类使用 )
NavigationUI 类支持一些系统自带的控件 , 配置后 , 自动跳转 Fragment 界面的功能 , 使用起来非常简洁 , 支持的可配置 Navigation 跳转的控件有 :
韩曙亮
2023/10/11
1K0
【Jetpack】Navigation 导航组件 ⑤ ( NavigationUI 类使用 )
基于 Android Studio 音乐播放器App
点击右侧文字传送:基于 Android Studio 实现的简易 音乐播放器App_android studio音乐播放器-CSDN博客
编程乐学
2024/07/01
2320
基于 Android Studio  音乐播放器App
Android的ListView和RecyclerView的基本用法
在Android 5.0 版本之前,为了方便的显示多行数据,形如QQ聊天信息主界面,最常用的选择无非是ListView控件,但是ListView控件本身就有很大的局限性和效率问题(相对于RecyclerView控件)来说,比如说ListView只能竖向滚动显示数据,不能横向滚动显示数据,在一些特殊的需求中,ListView就无能为力了。在Android5.0版本之后,Android官方推出了一个新的控件:RecyclerView ,完全解耦的设计使得RecyclerView比起ListView灵活了太多,应用的场合也非常广泛。那么,就来看一下ListView和RecyclerView的用法和不同之处在哪:
指点
2019/01/18
1.2K0
Android的ListView和RecyclerView的基本用法
Android实战_note1(MyMirror_一款小型摄像处理的App)
1.1 Activity.java全文: 注意代码中的注释,其中 handler.sendEmptyMessageDelayed(1,3000); 这个方法比较有趣
凌川江雪
2018/09/13
4210
Android实战_note1(MyMirror_一款小型摄像处理的App)
推荐阅读
相关推荐
开发一款即时通讯App,从这几步开始
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验