Flutter快速搭建聊天

之前项目中使用的环信聊天,我们的App使用的Flutter开发的 。 

所以,就使用的 em_chat_uikit ,这个是环信开发的Flutter版本的聊天。 

一开始,我们也用的环信的聊天,是收费的,但是,后面就发现,我们的量其实没那么大,使用环信的话,交的钱买到的服务,其实对于我们来说是过剩的。  于是,就自己搭建了聊天,这样也就不用付费了。 

问题也来了, 之前聊天功能直接集成的 em_chat_uikit 直接就可以用的。 现在自己搭建的话,那岂不是要重新开发界面。 经过测试,发现可以继续使用 em_chat_uikit 来开发聊天。 

如上图,我集成的是 em_uikit_chat 2.0.3 版本,其实把这些 actions  文件夹里的方法,都对接到自己的后台API,就可以搞定了 。 

经过测试,完全可行, 我是代码集成了em_uikit_chat ,所以,聊天的界面,对接的接口,都直接在这个 em_uikit_chat 内来改, 这样,以后如果有新的项目启动,也可以把聊天模块直接搬到别的项目来使用。 

数据库一共建了4张表,会话列表、用户信息、好友列表、聊天记录列表,也是按照 em_uikit_chat 的格式对应字段来创建的。 这样,本地存储就解决了。 

后台实现的接口大概有 20 个接口, em_uikit_chat 的命名还是很规范的,所以,按照你们的需求,往里面填充就好了; 整个过程还是挺顺利的。 

另外,就是环信他是有技术支持的,所以,你懂的,em_uikit_chat 内如果有不懂的地方,也可以去找环信咨询。  真可wei是,把hao羊毛搞到了极致了。 哈哈。  主要我们体量还没那么大,每个月付几千的费在聊天上,确实浪费; 自己搭建一个可以满足需求,又能免掉这个费用。 还是值得的。 当然,后期用户量如果很大了, 我们这样集成  em_uikit_chat 的话,也能一键切回到环信。 

其实,还有一个原因,那就是环信的Flutter版他并没有适配鸿蒙,他的em_uikit_chat是纯Flutter的,这个迁移到鸿蒙不会有什么问题。 问题就在于em_uikit_chat 依赖 im_flutter_sdk ,这个 im_flutter_sdk 又对接的Native的聊天sdk,也就是对应的 Android、ios、鸿蒙都有原生的sdk,偏偏 im_flutter_sdk 与鸿蒙原生sdk之间的桥接,环信一直没有去实现。 这就导致,哪怕我们集成了em_uikit_chat 也还是不支持鸿蒙的。 

所以,这次自己搭建聊天后台, 就能解决这个问题了, 我们的项目不再去依赖Native的聊天sdk了,websocket通信,还有那20多个接口,都在Flutter实现了, 这样以来,也能解决了适配鸿蒙的问题。  

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

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

相关文章

Sa-Token

简介 Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。 官方文档 常见功能 登录认证 本框架 用户提交 name password 参数,调用登…

基于javaweb的SSM航班机票预订平台系统设计与实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

格雷码、汉明码,CRC校验的区别

格雷码、汉明码和CRC校验都是用于数据传输和存储中的编码技术。 它们在原理、功能和应用场景上存在显著区别。 1.格雷码(Gray Code) • 定义:格雷码是一种特殊的二进制编码,任意两个相邻的码字之间仅有一位不同。 • 功能&#x…

【报错】 /root/anaconda3/conda.exe: cannot execute binary file: Exec format error

背景: 安装Anaconda3 bash Anaconda3-****-Linux-x86_64.sh 报错: /root/anaconda3/conda.exe: cannot execute binary file: Exec format error 原因分析: 安装包(如

JAVA实现动态IP黑名单过滤

一些恶意用户(可能是黑客、爬虫、DDoS 攻击者)可能频繁请求服务器资源,导致资源占用过高。因此需要一定的手段实时阻止可疑或恶意的用户,减少攻击风险。 通过 IP 封禁,可以有效拉黑攻击者,防止资源被滥用,保障合法用户…

开源的CMS建站系统可以随便用吗?有什么需要注意的?

开源CMS建站系统虽然具有许多优点,但并非完全“随便用”。无论选哪个CMS系统,大家在使用的时候,可以尽可能地多注意以下几点: 1、版权问题 了解开源许可证:不同的开源CMS系统采用不同的开源许可证,如GPL、…

故障识别 | 基于改进螂优化算法(MSADBO)优化变分模态提取(VME)结合稀疏最大谐波噪声比解卷积(SMHD)进行故障诊断识别,matlab代码

基于改进螂优化算法(MSADBO)优化变分模态提取(VME)结合稀疏最大谐波噪声比解卷积(SMHD)进行故障诊断识别 一、引言 1.1 机械故障诊断的背景和意义 在工业生产的宏大画卷中,机械设备的稳定运行…

探究 CSS 如何在HTML中工作

2025/3/28 向全栈工程师迈进&#xff01; 一、CSS的作用 简单一句话——美化网页 <p>Lets use:<span>Cascading</span><span>Style</span><span>Sheets</span> </p> 对于如上代码来说&#xff0c;其显示效果如下&#xff1…

硬件老化测试方案的设计误区

硬件老化测试方案设计中的常见误区主要包括测试周期不足、测试条件过于单一、样品选择不当等方面。其中&#xff0c;测试周期不足尤为突出&#xff0c;容易导致潜在缺陷未被完全暴露。老化测试本质上是通过加速产品老化来模拟长期使用状况&#xff0c;因此测试周期不足会严重削…

无锡零碳园区“三年突围”安科瑞源网荷储充系统如何破解“绿电难、储能贵、调度乱”困局?

零碳园区建设如火如荼&#xff0c;为何企业“不敢投、不会用”&#xff1f; 无锡市政府3月27日发布《零碳园区建设三年行动方案》&#xff0c;目标到2027年建成10家以上零碳园区、20家零碳工厂、10个源网荷储一体化项目。但企业仍存疑虑&#xff1a; 绿电消纳难&#xff1a;光…

docker torcherve打包mar包并部署模型

使用Docker打包深度网络模型mar包到服务端 参考链接&#xff1a;Docker torchserve 部署模型流程——以WSL部署YOLO-FaceV2为例_class myhandler(basehandler): def initialize(self,-CSDN博客 1、docker拉取环境镜像命令 docker images出现此提示为没有权限取执行命令&…

Redis 分布式锁实现深度解析

Redis 分布式锁是分布式系统中协调多进程/服务对共享资源访问的核心机制。以下从基础概念到高级实现进行全面剖析。 一、基础实现原理 1. 最简实现&#xff08;SETNX 命令&#xff09; # 加锁 SET resource_name my_random_value NX PX 30000# 解锁&#xff08;Lua脚本保证原…

kubernetes》》k8s》》 kubeadm、kubectl、kubelet

kubeadm 、kubectl 、kubelet kubeadm、kubectl和kubelet是Kubernetes中不可或缺的三个组件。kubeadm负责集群的快速构建和初始化&#xff0c;为后续的容器部署和管理提供基础&#xff1b;kubectl作为命令行工具&#xff0c;提供了与Kubernetes集群交互的便捷方式&#xff1b;而…

linux 硬盘扩展

场景&#xff1a; [rootlocalhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 40G 0 disk ├─sda1 8:1 0 1M 0 part ├─sda2 8:2 0 1G 0 part /boot └─sda3 …

Docker Desktop 界面功能介绍

Docker Desktop 界面功能介绍 左侧导航栏 Containers(容器): 用于管理容器,包括查看运行中或已停止的容器,检查容器状态、日志,执行容器内命令,启动、停止、删除容器等操作。Images(镜像): 管理本地 Docker 镜像,可查看镜像列表、从 Docker Hub 拉取新镜像、删除镜…

C++细节知识for面试

1. linux上C程序可用的栈和堆大小分别是多少&#xff0c;为什么栈大小小于堆&#xff1f; 1. 栈&#xff08;Stack&#xff09;大小 栈默认为8MB&#xff0c;可修改。 为什么是这个大小&#xff1a; ​安全性&#xff1a;限制栈大小可防止无限递归或过深的函数调用导致内存…

数据设计(范式、步骤)

文章目录 数据设计1.数据库设计的三大范式2、数据库设计的具体步骤 数据设计 1.数据库设计的三大范式 关系型数据库的三大范式&#xff0c;指导如何设计一个关系型数据库。 1NF&#xff1a; 关系表的每个字段&#xff0c;都应该是不可再分的&#xff0c;——保证原子性。 字…

PhotoShop学习03

1.更改图像大小 通常情况下&#xff0c;如果我们想在某些上传图片&#xff0c;会发现我们的图片可能会过大或者过小&#xff0c;为此&#xff0c;我们需要调整图像的大小&#xff0c;使之符合网站的规则。 首先打开photoshop&#xff0c;打开一张图片。首先我们需要了解这张图…

Vue 项目中使用$refs来访问组件实例或 DOM 元素,有哪些注意事项?

大白话Vue 项目中使用$refs来访问组件实例或 DOM 元素&#xff0c;有哪些注意事项&#xff1f; 在 Vue 项目里&#xff0c;$refs 是个超实用的工具&#xff0c;它能让你直接访问组件实例或者 DOM 元素。不过使用的时候&#xff0c;有一些地方可得注意&#xff0c;下面咱就详细…

【安全运营】关于攻击面管理相关概念的梳理(二)

CYNC&#xff08;持续可见性和网络控制&#xff09; CYNC&#xff08;Continuous Visibility and Network Control&#xff09;即“持续可见性和网络控制”&#xff0c;是一个与网络安全和IT运营管理相关的概念。它强调的是在一个组织的数字环境中&#xff0c;确保对所有资产、…