Qt+腾讯IM开发笔记(一):腾讯IM介绍、使用和Qt集成腾讯IM-SDK的工程模板Demo
前言
开发一个支持全国的IM聊天,可以有基本的功能,发送文本、图片、文件等等相关内容。
腾讯IM产品
概述
腾讯即时通信IM是腾讯推出的即时聊天程序,当前时间为2020年3月(腾讯IM的优惠活动和售卖方案不同时期会有变化)。
该IM提供各端接入接口、稳定必达、覆盖全球的即时通信云服务上。
应用场景
包括但不限于以下场景:
特点
消息传输
支持文字、图片、短语音、短视频等富媒体消息及自定义消息与自定义表情,支持保存历史漫游消息,集成消息撤回、消息转发、安全打击等扩展能力,构建稳定、便捷的消息传输通道。
会话管理
集成 TUIKit 组件,轻松实现添加会话、会话置顶、会话列表展示,未读消息计数,历史漫游消息展示等功能。
群组管理
支持群成员管理、群组自定义字段、群资料与群公告变更与展示、群组置顶等能力,提供私有群、公开群、聊天室、音视频聊天室等多种群组类型,满足个性化群组需要。
资料管理
支持设置用户资料、更改头像,可配置好友关系,提供好友验证选项,适配您的业务场景。
旗舰版和专业版功能对比
即时通信 IM 套餐包分为体验版、专业版和旗舰版,创建应用后默认为体验版(免费),您可以根据实际业务需求选择不同的套餐包。
构架
即时通信 IM 提供全球接入、单聊、群聊、消息推送、资料关系链托管、帐号鉴权等全方位解决方案,并提供完备的 App 接入、后台管理接口。
费用
从2018年9月14日之后,注册sdkappid的客户都需要购买预付费吧,999,之前的不用,意味着,你想自己做Demo先出999吧,如下图:
使用腾讯IM准备
产品简介: https://cloud.tencent.com/document/product/269/1498
价格说明: https://cloud.tencent.com/document/product/269/11673
应用场景: https://cloud.tencent.com/document/product/269/32579
Demo 体验: https://cloud.tencent.com/document/product/269/36852
接入SDK:https://cloud.tencent.com/document/product/269/37176
腾讯IM服务的SDKAppID和秘钥
腾讯开发文档
https://cloud.tencent.com/document/product/269/37176
下载SDK
IM SDK基本概念
会话
会话(Conversation)分为两种:
- 一种是 C2C 会话,表示单聊情况自己与对方建立的对话,读取消息和发送消息都是通过会话完成;
- 一种是群会话,表示群聊情况下,群内成员组成的会话,群会话内发送消息群成员都可接收到。如下图所示,一个会话表示与一个好友的对话;
消息
IM SDK 中消息(Message)表示要发送给对方的内容,消息包括若干属性,如是否自己已读,是否已经发送成功,发送人帐号,消息产生时间等;一条消息由若干Elem组合而成,每种Elem可以是文本、图片、表情等等,消息支持多种 Elem组合发送。
群组ID
群组 ID 唯一标识一个群,由后台生成,创建群组时返回。
IM SDK使用说明
IM SDK接口
文档地址:https://cloud.tencent.com/document/product/269/33543
如果接口的参数字符串包含中文,请使用 UTF-8 编码。
事件回调接口
IM SDK 初始化相关接口
登录登出相关接口
会话相关接口
消息相关接口
群组相关接口
用户资料相关接口
关系链相关接口
模块化
Demo关键代码
tencentIMManager.pri
# ImSDK
INCLUDEPATH += $$PWD/ImSDK/includes
HEADERS += \
$$PWD/ImSDK/includes/TIMCloud.h \
$$PWD/ImSDK/includes/TIMCloudCallback.h \
$$PWD/ImSDK/includes/TIMCloudComm.h \
$$PWD/ImSDK/includes/TIMCloudDef.h
LIBS += -L$$PWD/ImSDK/lib/Win32/Release \
-limsdk
工程模板V1.0.0
对应该模块的的V1.0.0
入坑
入坑一:登录鉴权的问题
问题
登陆时,回调错误70003
原因
每次登录,需要输入userId和UserSig,UserSig为依赖userId生成的,两者和二唯一被认为是唯一可靠的认证,才可以登录。
解决方法
本地生成userSig,做大型聊天防止破解等提高安全性,则可以让后台向腾讯生成userSig,以保证可靠。
将两文件,融入到代码中。
入坑二:编译权鉴获取时缺库“bcrypt”
问题
解决
Qt的环境自带了,库文件添加进去
入坑三:编译鉴权获取时缺库“zlib”
问题
原因
缺少zlib库,需要自己编译
解决
笔者之前曾经编译过,直接赋值拿过来即可,读者编译请参照博文:《zlib开发笔记(一):zlib库介绍、编译和工程模板》
添加头文件路径和库
入坑四:登陆时报错70003
问题
原因
中文的userId。
解决
只能使用英文数字id,不能使用中文。
入坑五:登陆时报错70003
问题
原因
解决
使用std::string
若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/119305601
Qt+腾讯IM开发笔记(一):腾讯IM介绍、使用和Qt集成腾讯IM-SDK的工程模板Demo的更多相关文章
- SDL开发笔记(二):音频基础介绍、使用SDL播放音频
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- 树莓派开发笔记(十七):树莓派4B+上Qt多用户连接操作Mysql数据库同步(单条数据悲观锁)
前言 安装了mysq数据库,最终时为了实现在一个树莓派上实现多用户多进程操作的同步问题,避免数据并发出现一些错误,本篇安装了远程服务并且讲述了使用Qt进行悲观锁for update操作,命令行进行 ...
- 【搜索引擎Jediael开发笔记1】搜索引擎初步介绍及网络爬虫
详细可参考 (1)书箱:<这就是搜索引擎><自己动手写网络爬虫><解密搜索引擎打桩实践> (2)[搜索引擎基础知识1]搜索引擎的技术架构 (3)[搜索引擎基础知识2 ...
- 张高兴的 Xamarin.Forms 开发笔记:TapGestureRecognizer 的简单介绍与应用
最近很少写应用了,一直在忙关于 ASP.NET 的东西(哈欠...).抽点时间对 TapGestureRecognizer 做点总结. 一.简介 TapGestureRecognizer 就是对 Ta ...
- QCustomPlot开发笔记(一):QCustomPlot简介、下载以及基础绘图
前言 QCustomPlot开发笔记系列整理集合,这是目前使用最为广泛的Qt图表类(Qt的QWidget代码方向只有QtCharts,Qwt,QCustomPlot),使用多年,系统性的整理,过目 ...
- 《ArcGIS Runtime SDK for Android开发笔记》
开发笔记之基础教程 ArcGIS Runtime SDK for Android 各版本下载地址 <ArcGIS Runtime SDK for Android开发笔记>——(1).And ...
- 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:概述
1.前言 数据生产和数据展示是常见的两大专业级移动GIS应用场景,这里我们针对数据生产环节的ArcGIS的离在线一体化技术给大家做一个基本的介绍和梳理. 使用ArcGIS离在线一体化技术首先需要以下基 ...
- 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据同步
1.前言 上一篇文章中我们实现了离线要素的编辑操作,这一篇中主要介绍离在线一体化技术中最后一个环节离线数据的同步功能,通过对数据的上传,服务器端的版本化管理,实现数据生产管理的整个流程. 转载请注明出 ...
- Matlab+Qt开发笔记(一):matlab搭建Qt开发matlib环境以及Demo测试
前言 做一些数据处理软件,使用matlab文件,.mat文件. 准备条件 安装matlab2016,发现是vs 12(是vs2011版本),Qt5.9.3是支持vs 14(是vs2015版 ...
随机推荐
- docker0-常用命令-持续更新
问君哪得清如许,为有源头活水来 1,帮助命令 docker version docker info docker 命令 --help 2,仓库\镜像 docker images 查看所有本地镜像 do ...
- Bean初始化操作initMethod、@PostConstruct和InitializingBean
我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 简介 很多时间当一个Bean被创建出来后,我们希望做一些初始化操作,如初始化数据.缓存预热等.有以下三种方法: 初始化 ...
- python 字典和列表嵌套用法
python中字典和列表的使用,在数据处理中应该是最常用的,这两个熟练后基本可以应付大部分场景了.不过网上的基础教程只告诉你列表.字典是什么,如何使用,很少做组合说明. 刚好工作中采集promethe ...
- C++中指针与引用详解
在计算机存储数据时必须要知道三个基本要素:信息存储在何处?存储的值为多少?存储的值是什么类型?因此指针是表示信息在内存中存储地址的一类特殊变量,指针和其所指向的变量就像是一个硬币的两面.指针一直都是学 ...
- 精尽Spring Boot源码分析 - 文章导读
该系列文章是笔者在学习 Spring Boot 过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring Boot 源码分析 GitHub 地址 进行阅读 Sprin ...
- 快速简单的了解VLAN(VXLAN)和端口链路类型
目录 前言 一.VLAN是什么? 1.优点 2.为什么推出VXLAN 二.VXLAN又是什么? 1.优点 三.创建VLAN 四.介绍端口链路类型 五.Access 1.特性 六.Trunk 1.特性 ...
- 四、JavaSE语言基础之运算符
什么是是运算符 运算符:用于数据运算的符号,运算是一种处理.(注:浮点型数据(float.double)进行运算会出现精度丢失的情况) 运算符大致可分为以下六种: 一.算术运算符:+.-.*./.%. ...
- 10、修改windows编码集
10.1.查看Windows的字符集编码: 1.方法一: (1) 同时按住"windows"徽标键和"r"键,在弹出的"运行"框中输入&qu ...
- redis--hash的实现
Redis数据结构---字典,哈希表,dict 或java中的map,数据使用key -> value的形式存储,整个redis数据库就是基于字典实现,api见hash REDIS的hash实现 ...
- Java进阶 | IO流核心模块与基本原理
一.IO流与系统 IO技术在JDK中算是极其复杂的模块,其复杂的一个关键原因就是IO操作和系统内核的关联性,另外网络编程,文件管理都依赖IO技术,而且都是编程的难点,想要整体理解IO流,先从Linux ...