基于融云的即时通讯开发(一)

一.概述

现在的应用中,即时通讯功能已经很普遍了,从这篇文章开始,我们以第三方平台融云的服务为基础,研究一下如何开发一个具有及时通信功能的软件。

首先,进入融云的官网,地址如下:
http://rongcloud.cn/

这里写图片描述

然后我们点击登录,没有账号的要先注册一下,登录成功后进入控制台页面,我们创建一个应用

这里写图片描述

我们点击左边的应用名称,进去之后可以看到一些应用的详细信息,比如AppKey

这里写图片描述

然后我们点击右边的下载SDK,此时会跳转到SDK的下载页面
这里写图片描述

因为我们是基于Android平台进行开发的,我们选择最左边的Android SDK进行下载,同时也可以下载Demo源码,下面介绍一下IMIKit和IMLib的区别:

IM 界面组件 - IMKit
IMKit 是融云 SDK 的核心特色之一。融云将即时通讯产品中最复杂的会话列表、聊天窗口、消息内容展现、会话设置等功能封装为组件,通过简短的代码,您就可以直接将以上界面集成到您的 App 产品中,省去大量的开发调试时间。融云同时支持业内最丰富的自定义界面组件功能,您可以针对自己界面需求自由设计开发。

IMKit 的核心类在 Android 平台是 RongIM,在 iOS 平台是 RCIM,这两个类在今后的开发中和 IMKit 代表相同的意义

IM 通讯能力库 - IMLib
IMLib 是不含界面的基础 IM 通讯能力库,封装了通信能力和会话、消息等对象。引用到 App 工程中后,需要开发者自己实现 UI 界面,相对较轻量,适用于对 UI 有较高订制需求的开发者

IMLib 的核心类在 Android 平台是 RongIMClient,在 iOS 平台是 RCIMClient,这两个类在今后的开发中和 IMLib 代表相同的意义。

我们把两个东西都下载下来,方便后面的使用

二.环境的搭建

首先我们在Android Studio中新建一个项目,然后导入融云的IMKIT库,并与我们的项目进行关联,关联成功之后,我们新建一个全局Application对象,如下

public class App extends Application {@Overridepublic void onCreate() {super.onCreate();/*** OnCreate 会被多个进程重入,这段保护代码,确保只有您需要使用 RongIM 的进程和 Push 进程执行了 init。* io.rong.push 为融云 push 进程名称,不可修改。*/if (getApplicationInfo().packageName.equals(getCurProcessName(getApplicationContext())) ||"io.rong.push".equals(getCurProcessName(getApplicationContext()))) {/*** IMKit SDK调用第一步 初始化*/RongIM.init(this);}}/*** 获得当前进程的名字** @param context* @return 进程号*/public static String getCurProcessName(Context context) {int pid = android.os.Process.myPid();ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);for (ActivityManager.RunningAppProcessInfo appProcess : activityManager.getRunningAppProcesses()) {if (appProcess.pid == pid) {return appProcess.processName;}}return null;}
}

同时在清单文件中配置我们的App对象,以及申请的Api Key

  <applicationandroid:name=".ui.App"android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme"><meta-dataandroid:name="RONG_CLOUD_APP_KEY"android:value="pvxdm17jxjqpr" />

然后,我们获取token,因为我们无法部署服务端程序,所以不能从融云服务器获取token,融云也给我们提供了 API 调试工具,可以输入userid获取token,如下图所示

这里写图片描述

输入userid就可以获取token了,我们分别输入10086和10010,获取两个token,后面用来连接服务器。

最后一步,利用获取到的token连接服务器

  if (getApplicationInfo().packageName.equals(App.getCurProcessName(getApplicationContext()))) {RongIM.connect(token1, new RongIMClient.ConnectCallback() {@Overridepublic void onTokenIncorrect() {}@Overridepublic void onSuccess(String userid) {//userid,是我们在申请token时填入的useridSystem.out.println("========userid" + userid);}@Overridepublic void onError(RongIMClient.ErrorCode errorCode) {}});}

连接如果成功,会打印出我们申请token时的userid,经过测试,正确打印出了userid,说明我们连接服务器成功。

上面就是最基本的环境搭建了,接下来我们实现其他功能。

三.头像/昵称的实现

显示头像我们需要设置用户信息提供者,否则在聊天界面显示的只是默认的头像。

融云提供了两种方式从 App 的数据源显示用户昵称和头像,注意,使用的时候采用一种方式就可以了,不能混用。
1、设置用户信息提供者
2、使用消息携带用户信息

这里给大家展示一下两个用户的头像

特兰克斯,10086

这里写图片描述

孙悟天,10010

这里写图片描述

然后介绍一个功能,刷新用户信息,大家如果需要的话可以按照下面的方式,

  RongIM.getInstance().refreshUserInfoCache(new UserInfo(mUserid.equals("10086")?"10086":"10010",mUserid.equals("10086")?"我曾经是是特兰克斯":"我曾经是孙悟天",mUserid.equals("10086")?Uri.parse(Constant.imageUrl3):Uri.parse(Constant.imageUrl4)));

四.会话列表以及会话页面

接下来我们集成会话列表以及会话页面,具体代码我就不贴了,文章最后我会给出Demo的下载地址,这里我给大家演示一下集成之后的效果图。

会话列表
默认情况下会话列表内容为空,因为此时我们还没有发任何消息。

这里写图片描述

接下来我们集成会话界面,成功之后效果图如下

这里写图片描述

我们模拟点击某个好友进入到会话界面,并且发送消息,此时我们在回过头去看会话列表界面,此时就可以看到刚才发出的消息了

这里写图片描述

最后,我们开启两个模拟器,互相发送消息测试一下,

这里写图片描述

消息已经可以正常发送了,说明我们的配置正确

五.会话列表各项参数配置修改

在实现了基本功能之后,接下来我们对界面做一些美化和修改

首先,在会话页面我们要展示出当前正在和谁进行聊天

修改后页面如下,是不是比之前漂亮一点了

这里写图片描述

下面给出会话页面的布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="com.example.rongcloudim.ui.ConversationActivity"><RelativeLayout
        android:layout_width="match_parent"android:layout_height="50dp"android:background="@color/blue"><TextView
            android:id="@+id/tv_title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="@android:color/white"android:textSize="20sp"android:layout_centerInParent="true"/></RelativeLayout><fragment
        android:id="@+id/rc_conversation_content"android:name="io.rong.imkit.fragment.ConversationFragment"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"/>
</LinearLayout>

注意:上面的fragment是融云自带的fragment,我们在此引用过来,同时需要注意,给这个fragment加上id或者tag,否则在运行的时候,会报错。

六.语音以及视频通话功能集成

集成语音或者通话功能我们需要下载CallKit SDK,

这里写图片描述

下载好之后依赖到项目中,此时就不在需要IMKit组件了,因为CallKit是基于IMKit组件的。

由于融云的语音以及视频功能需要认证企业开发这或者充值后才能使用,这里就不详细介绍了,有需要的大家去官方了解一下。

最后给出Demo下载地址

点此下载源码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/41184.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于 Stable Diffusion 一键 AI 作画:什么“小镇做题家”?人人都是艺术家

文章目录 前言一、西方艺术简史1.1、古典艺术时期1.2、现代艺术时期1.3、后现代艺术时期 二、数字艺术的诞生和发展2.1、数字艺术的诞生2.2、数字艺术下的行业细分2.3、数字作品的创作过程2.4、AI 作画诞生 三、Stable Diffusion 文字生成图像3.1、实验环境准备3.2、什么是 Sta…

ZipZap.AI:首款支持无限次数GPT4 AI助理,性能测试结果惊人

随着人工智能技术的不断发展&#xff0c;AIGC&#xff08;Artificial Intelligence Generative Content&#xff09;技术也越来越受到关注。AIGC技术是指利用人工智能模型生成各种内容&#xff0c;如文本&#xff0c;图片&#xff0c;音频&#xff0c;视频等。AIGC技术可以帮助…

解放生产力!用Python结合GPT-4进行编程(上)

用GPT-4和Python自动处理枯燥的工作&#xff0c;通过让AI在几秒钟内编写Python代码来加快日常工作流程。 微信搜索关注《Python学研大本营》&#xff0c;加入读者群&#xff0c;分享更多精彩 2023年3月14日&#xff0c;OpenAI推出了GPT-4&#xff0c;这是OpenAI最新、最强大版本…

chatgpt赋能python:Python图片线条:提升你网站的视觉效果和SEO排名

Python图片线条&#xff1a;提升你网站的视觉效果和SEO排名 引言 在当今世界&#xff0c;互联网已成为人们获取信息的主渠道&#xff0c;网站的规模和复杂度也呈指数级增长。在这种情况下&#xff0c;如何让你的网站在众多搜索结果中更加突出&#xff0c;吸引更多的访问者是一…

深度学习使用sketch-code 草图、手稿自动生成HTML前端页面

之前在知乎上看到一篇文章 标题是 《从草图到HTML只需5秒》&#xff0c;好奇点进去看了一会。 顿时惊了。这是一个使用手稿来生成HTML页面的项目&#xff0c;非常有意思。 具体原文在此&#xff1a;从草图到HTML只需5秒 如图片这样&#xff0c;只要一张手绘图&#xff0c;就可…

chatgpt赋能python:Python手绘:让编程画画更有趣

Python 手绘&#xff1a;让编程画画更有趣 作为一名资深的 Python 工程师&#xff0c;我不仅在编程领域里拥有丰富的经验&#xff0c;还深深地热爱着手绘。尤其是通过 Python 手绘&#xff0c;我发现这门编程语言不仅可以用来创造出强大的软件系统&#xff0c;还能让我们在绘画…

第12章项目质量管理

项目质量管理包括把组织的质量政策应用于规划、管理、控制项目和产品质量要求&#xff0c;以满足干系人目标的各个过程。此外&#xff0c;项目质量管理以执行组织的名义支持过程的持续改进活动。项目质量管理需要兼顾项目管理与项目可交付成果两个方面&#xff0c;它适用于所有…

上海交大教授何援军:论工业软件发展的若干问题

何援军&#xff0c;上海交通大学计算机系教授、博士生导师。主要研究方向&#xff1a;CAD&#xff0c;计算机图形学。几何计算的理论、算法和软件等。1992年7月被中国船舶工业总公司授予“有突出贡献中青年专家称号”。同年10月起享受政府特殊津贴。“九五”期间任上海市CAD应用…

国内人力资源管理软件的低代码应用

随着企业数字化转型的推进和人力资源管理的逐步精细化&#xff0c;HR系统越来越被重视。许多企业纷纷采购了各种功能强大的HR系统&#xff0c;然而&#xff0c;这些系统常常需要在充分理解业务流程和用户需求的前提下进行细致定制。这不仅需要一定的技术储备&#xff0c;还需要…

当HR软件系统开始低代码

随着企业数字化转型的推进和人力资源管理的逐步精细化&#xff0c;HR系统越来越被重视。许多企业纷纷采购了各种功能强大的HR系统&#xff0c;然而&#xff0c;这些系统常常需要在充分理解业务流程和用户需求的前提下进行细致定制。这不仅需要一定的技术储备&#xff0c;还需要…

HR软件市场中的低代码

低代码是一种通过可视化方式创建应用的平台&#xff0c;能够提高开发效率、降低开发难度。为了适应快速发展需求&#xff0c;一些主流 HR 系统厂商开始引入低代码能力和工具。而 HR 软件市场应用低代码的前景如何&#xff1f;低代码能如何帮助 HR 市场呢&#xff1f;让我们通过…

什么是渲染?一文看懂,萌新赶紧收藏码住!

十四五规划提出“加快数字化发展&#xff0c;建设数字中国”&#xff0c;数字技术的快速发展&#xff0c;从起初的内容创建到最终的效果呈现&#xff0c;都离不开渲染技术。目前&#xff0c;渲染技术被广泛应用于教育、医疗、影视动画、建筑设计等多个领域。它能有效满足用户对…

团队沟通利器之UML——活动图

在平时的项目开发中&#xff0c;可能有的团队对业务都是用口头在团队里面进行交流&#xff0c;有时程序员的理解跟老大表达的意思不一致&#xff0c;还有 其他等等的弊端就不说了。我们知道建筑工人都是按照图纸做事的&#xff0c;同样在软件开发中&#xff0c;我们应该也有这…

【AIGC】1、爆火的 AIGC 到底是什么 | 全面介绍

文章目录 一、AIGC 的简要介绍二、AIGC 的发展历程三、AIGC 的基石3.1 基本模型3.2 基于人类反馈的强化学习3.3 算力支持 四、生成式 AI&#xff08;Generative AI&#xff09;4.1 单模态4.1.1 生成式语言模型&#xff08;Generative Language Models&#xff0c;GLM&#xff0…

基于微信小程序的旅游系统源码

开发环境及工具&#xff1a; 大等于jdk1.8&#xff0c;大于mysql5.5&#xff0c;idea&#xff08;eclipse&#xff09;&#xff0c;微信开发者工具 技术说明&#xff1a; springboot mybatis 微信小程序 代码注释齐全&#xff0c;没有多余代码&#xff0c;适合学习(毕设)&a…

【Pyecharts|GEO-Lines】全球航线图的绘制

前言 航线图是基于Echarts官网的示例航线图通过Pyecharts来实现的,当然由于Pyecharts还是诸多限制,并不能100%还原。 本次实现了全球机场分布图和航线图效果(支持切换航司): 全球机场分布 航线图动图效果 相关代码和数据都已经上传至我的Github,可以访问下载:https://…

视觉与多模态大模型前沿进展 | 2023智源大会精彩回顾

导读 6 月 9 日下午&#xff0c;智源大会「视觉与多模态大模型」专题论坛如期举行。随着 stable diffusion、midjourney、SAM 等爆火应用相继问世&#xff0c;AIGC 和计算机视觉与大模型的结合成为了新的「风口」。本次研讨会由智源研究院访问首席科学家颜水成和马尔奖获得者曹…

【通览一百个大模型】GLM(THU)

【通览一百个大模型】GLM&#xff08;THU&#xff09; 作者&#xff1a;王嘉宁&#xff0c;本文章内容为原创&#xff0c;仓库链接&#xff1a;https://github.com/wjn1996/LLMs-NLP-Algo 订阅专栏【大模型&NLP&算法】可获得博主多年积累的全部NLP、大模型和算法干货资…

【论文写作】《ChatGPT六步提问法:你若诚心发问,它会给你一篇惊艳论文!》- 知识点目录

《ChatGPT六步提问法&#xff1a;你若诚心发问&#xff0c;它会给你一篇惊艳论文&#xff01;》

chatgpt赋能python:10年Python编程经验带你畅玩Python编程游戏APP

10年Python编程经验带你畅玩Python编程游戏APP Python是一种高级编程语言&#xff0c;具有易懂、易学、易用等特点&#xff0c;被广泛应用于科学计算、数据处理、Web开发和人工智能等领域。而Python编程游戏APP则是近年来Python社区中新兴的一类应用&#xff0c;它以游戏化的方…