鸿蒙开发融云demo初始化和登录
鸿蒙开发融云IMKit初始化和登录
融云鸿蒙版是不带UI的,得自己一步步搭建。
下面说如何初始化和登录:
一、初始化:
/*** @desc : 初始化融云* @author : congge on 2024-07-12 15:47**/public static initRongIm() {IMEngine.getInstance().init(getContext(), CommonConstants.RONG_IM_KEY, new InitOption())// 注册自定义消息let clazzList: List<MessageContentConstructor> = new List()clazzList.add(CustomizeReadReceiptMessage)clazzList.add(CustomizeGiftMessage)IMEngine.getInstance().registerMessageType(clazzList)// 监听消息接收IMEngine.getInstance().setMessageReceivedListener((message: Message, _info: ReceivedInfo) => {logContent("receivedMessage",message)if (message.content) {if (message.objectName === HQVoiceMessageObjectName && message.direction === MessageDirection.Receive && !_info.isOffline) {// isOffline为true,是卸载重装收到的消息不用管,正常刚收到的语音消息全部是未点击,它不可能一收到就点击了的MMKVNoClearUtil.saveVoiceMessageReadStatus(message.targetId,message.messageId,false)}// 在这就不发已读回执了,避免两个鸿蒙一直在互发已读// if (MMKVUtil.getCurrentChatTargetId(message.targetId) === message.targetId) {// ImUtils.sendMyReadReceiptMessage(message.targetId,message.sentTime)// } else if(MainPage.homeTabSelected === 3){// ImUtils.sendMyReadReceiptMessage(message.targetId,message.sentTime)// }// 刷新首页未读数EventKeys.postEvent(EventKeys.MsgRedEvents,MsgRedEvent())// 刷新会话列表,不打算自己插入会话EventKeys.postEvent(EventKeys.RefreshMsgListEvents)}// 接收到单聊消息,发送到聊天界面if (message.conversationType === ConversationType.Private || message.targetId === ImType.KEFU_ID) {EventKeys.postEvent(EventKeys.ReceivedImMessageEvents,ReceivedImMessageEvent(message))}});}
二、登录:
public static connectIm() {if (MMKVUtil.getImToken()) {ImUtils.realConnect(MMKVUtil.getImToken());} else {//正常只有第一次进入应用会为""ImViewModel.postImToken(false, (result) => {ImUtils.realConnect(result.token)})}}private static realConnect(token?: string, isAgain: boolean = false) {if (token) {IMEngine.getInstance().setConnectionStatusListener((status: ConnectionStatus) => {logContent('IM-App', 'setConnectionStatusListener onChanged status:' + status);if (status === ConnectionStatus.DisconnectUserKicked) {showToast($r('app.string.account_notice_tick'));// 特别注意:对方登录,强迫退出// Router.pushGuidePage(true)}});// timeout ≦ 0,IM 将一直连接,直到连接成功或者发生无法连接的业务错误(如 token 非法)IMEngine.getInstance().connect(token, 0).then(result => {if (EngineError.Success === result.code) {// 连接成功MMKVUtil.saveTargetId(result.userId)EventKeys.postEvent(EventKeys.MsgRedEvents,MsgRedEvent())logContent("imStatus", "成功token: " + token)logContent("imStatus", "成功targetId: " + result.userId)//let userId = result.userId;return;}if (EngineError.ConnectTokenExpired === result.code) {// Token 过期,从 APP 服务请求新 token,获取到新 token 后重新 connect()} else if (EngineError.ConnectionTimeout === result.code) {// 连接超时,弹出提示,可以引导用户等待网络正常的时候再次点击进行连接showToast($r('app.string.net_error'))} else {//其它业务错误码,请根据相应的错误码作出对应处理。logContent("imStatus", result.code)}});}}
鸿蒙融云Demo源码结构图:

有问题或者需要完整源码的私信我
相关文章:
鸿蒙开发融云demo初始化和登录
鸿蒙开发融云IMKit初始化和登录 融云鸿蒙版是不带UI的,得自己一步步搭建。 下面说如何初始化和登录: 一、初始化: /*** desc : 初始化融云* author : congge on 2024-07-12 15:47**/public static initRongIm() {IMEngine.getInstance()…...
手机防窥膜的工作原理是怎样的?有必要使用防窥膜吗?
在信息高度发达的社会中,我们通过手机可以实现非常多的操作,同时手机中有存在许多我们的隐私信息,伴随使用手机的时间增多,手机中的信息也有可能被暴露,尤其是在公共场所旁人很容易通过瞥视你的手机屏幕获取到一些信息…...
【Python_PySide6学习笔记(三十九)】基于QLineEdit实现自定义文本框,用于格式化文本,每四个字符后添加一个空格
基于QLineEdit实现自定义文本框,用于格式化文本,每四个字符后添加一个空格 基于QLineEdit实现自定义文本框,用于格式化文本,每四个字符后添加一个空格前言1、实现要点1.1 继承和初始化1.2 定义textChanged的槽函数1.3 格式化逻辑1…...
23种设计模式口诀速记
设计模式的核心在于提供了相关问题的解决方案,使得人们可以更加简单方便的复用成功的设计和体系结构 23种设计模式,此处不举例,可以去看我上传的资源里面由详细汇总 口诀: 创建:想见员工丹 [抽象工厂、建造者(生成者…...
n > m 将输出文件 m 和 n 合并。 n < m 将输入文件 m 和 n 合并。 有什么区别
在你的描述中,似乎有一点误解。n >& m 和 n <& m 并不是用来合并文件的,而是用于重定向文件描述符(file descriptors)。让我澄清一下这两个命令的确切含义以及它们之间的区别。 n >& m —— 输出重定向 含…...
语言障碍在自闭症儿童中的表现及应对
自闭症儿童常常面临着语言障碍的困扰,这给他们的成长和发展带来了巨大挑战。 语言障碍在自闭症儿童中的表现形式多样。比如,有个叫小明的自闭症儿童,已经五岁了却还只会说一些简单的词语,如 “爸爸”“妈妈”“要” 等,…...
(成功解决)ubuntu22.04不小心更新成了atzlinux12.7.1,右上角出现红色错误符号
文章目录 🌕问题🌕查看系统版本🌕为什么更新更成了atzlinux🌕通过修复依赖关系尝试解决右上角红色错误符号🌕把源换成ubuntu的源🌕删除atzlinux源和自定义的第三方源🌕重新创建/etc/os-release文…...
005 C#语言基本元素概览,初识类型,变量与方法
构成C#语言的基本元素 标记 :C#编译器可以识别的文本 关键字(Keyword)操作符(Operator)标识符(Identifier)标点符号文本注释和空白 简要介绍数据据类型、变量与方法 变量是存放数据的地方,简称数据 方法是处理数据的逻辑,简称算法 程序…...
Spring Cloud --- Sentinel 授权规则
授权规则概述 在某些场景下,需要根据调用接口的来源判断是否允许执行本次请求。此时就可以使用 Sentinel 提供的授权规则来实现,Sentinel 的授权规则能够根据请求的来源判断是否允许本次请求通过。 在 Sentinel 的授权规则中,提供了 白名单…...
计算机网络基础 - 传输层(1)
计算机网络基础 传输层概述多路复用与解复用概述解复用的工作原理无连接多路解复用面向连接的多路复用 无连接运输:UDP概述UDP 主要应用UDP 报文段结构 可靠数据传输的原理概述构建可靠数据传输协议经完全可靠信道的可靠数据传输:rdt1.0经具有比特差错信…...
Chrome DevTools:Console Performance 汇总篇
Chrome DevTools Chrome 开发者工具是一套 Web 开发者工具,直接内置于 Google Chrome 浏览器中。 开发者工具可以帮助您即时修改页面和快速诊断问题,最终帮助您更快地构建更好的网站。 一、开启 DevTools 右上角菜单 > 更多工具 > 开发者工具 页面…...
【Spark | Spark-Core篇】RDD行动算子action
使用转换算子是产生一个新的rdd,此时在driver端会生成一个逻辑上的执行计划,但任务还没有执行。但所谓的行动算子,其实就是触发作业执行的方法(runJob)。底层代码调用的是环境对象的runJob方法。 1. reduce 函数源码&…...
23.Redis核心数据结构
一、String(k-v) 字符串常规操作 备注 应用场景 SET key value 存入字符转键值对 单值缓存、对象缓存 MSET [key value, key value] 批量存储字符串键值对 对象缓存 SETNX key value 存入一个不存在的键值对 分布式锁 GET KEY 获取一个字符串键值 MGET [key,key,…...
免费送源码:Node.JS+Express+MySQL Express 流浪动物救助系统 计算机毕业设计原创定制
摘 要 随着互联网大趋势的到来,社会的方方面面,各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去,而其中最好的方式就是建立网络管理系统,并对其进行信息管理。由于现在网络的发达,流浪动物救助系…...
基于Java+Springboot+Vue开发的旅游景区管理系统
项目简介 该项目是基于JavaSpringbootVue开发的旅游景区管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的旅…...
Python 实现的风控系统(使用了kafka、Faust、模拟drools、redis、分布式数据库)
以下是一个使用 Python 实现的风控系统示例,涵盖以下技术组件: Kafka 消息中间件:用于实时接收支付业务系统传递的交易数据。Faust(Kafka Streams 的 Python 等价):用于流式处理 Kafka 中的消息。规则引擎…...
Linux运维_Rocky8 安装配置Zabbix
Zabbix 是一个开源的监控解决方案,用于监控网络、服务器、应用程序和服务的性能。它提供实时监控、数据收集、告警通知以及图形化界面,方便用户查看和分析监控数据。Zabbix 支持多种数据收集方式,包括 SNMP、IPMI、JMX 和自定义脚本ÿ…...
jQuery Mobile 滚屏事件
jQuery Mobile 滚屏事件 在移动开发中,滚屏事件是一个非常重要的交互方式,它可以让用户通过滚动屏幕来浏览内容。jQuery Mobile 是一个流行的移动框架,它提供了一套丰富的组件和事件,使得在移动设备上实现滚屏效果变得简单。本文将详细介绍 jQuery Mobile 中的滚屏事件,包…...
3.1.1ReactOS系统中搜索给定长度的空间地址区间函数的实现
系列文章目录 //搜索给定长度的空间地址区间 MmFindGap(); PMADDRESS_SPACE AddressSpace,//该进程用户空间 ULONG_PTR Length,//寻找的空间间隔大小 ULONG_PTR Granularity,//粒度位,表明空间起点的对齐要求,注意是起…...
arm64系统不支持32位的解决armel armhf
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...
18650圆柱锂电池电化学模型与Comsol锂电模型参数化研究及电化生热分析结果图集
18650圆柱锂电池模型电化学模型,comsol锂电模型参数已配置,电化学生热研究,三种放电倍率,参数化扫描,各种结果图都有。今天我们来聊聊18650圆柱锂电池的电化学模型,尤其是在COMSOL中的实现。说到锂电池&…...
Tina Linux 适配 RTL8733bs WIFI 模块:从设备树到网络连接全流程解析
1. 硬件接口配置与设备树修改 第一次接触RTL8733bs这个Wi-Fi/蓝牙二合一模块时,我花了两天时间才搞明白硬件连接和设备树配置的关系。这个模块通过SDIO接口与全志V853主控通信,蓝牙部分则使用UART接口。下面我就把踩过的坑和验证过的正确配置分享给大家。…...
华为仓颉语言实战:除了‘hello world’,还能用数组和循环做什么?(数字统计案例详解)
华为仓颉语言实战:数字统计案例与核心语法深度解析 刚学会在仓颉语言中打印"hello world"的你,是否好奇这门新兴语言还能做什么?让我们从一个实际案例出发——统计正整数中各数字出现的频次。这个看似简单的任务,却能带…...
暗黑3效率提升与智能辅助:D3keyHelper自动化工具全攻略
暗黑3效率提升与智能辅助:D3keyHelper自动化工具全攻略 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面,可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 在《暗黑破坏神3》的冒险旅程中&a…...
如何高效管理《神界:原罪2》模组?Divinity Mod Manager终极指南
如何高效管理《神界:原罪2》模组?Divinity Mod Manager终极指南 【免费下载链接】DivinityModManager A mod manager for Divinity: Original Sin - Definitive Edition. 项目地址: https://gitcode.com/gh_mirrors/di/DivinityModManager Divini…...
从二极管到全桥整流:5种电源防反接方案全对比,看完就知道你的项目该选哪个
从二极管到全桥整流:5种电源防反接方案全对比与选型指南 在嵌入式系统、消费电子和工业设备开发中,电源反接是最容易被忽视却可能造成灾难性后果的设计漏洞之一。想象一下:一个花费数月研发的物联网终端,因为现场安装人员的误操作…...
Blaze分块计算优化技巧:5个方法提升大数据处理性能
Blaze分块计算优化技巧:5个方法提升大数据处理性能 【免费下载链接】blaze NumPy and Pandas interface to Big Data 项目地址: https://gitcode.com/gh_mirrors/bl/blaze Blaze是一个强大的大数据处理工具,它通过分块计算技术为NumPy和Pandas提供…...
团队知识协作平台:构建高效智能的文档管理系统
团队知识协作平台:构建高效智能的文档管理系统 【免费下载链接】outline Outline 是一个基于 React 和 Node.js 打造的快速、协作式团队知识库。它可以让团队方便地存储和管理知识信息。你可以直接使用其托管版本,也可以自己运行或参与开发。源项目地址&…...
【shell编程】深入解析Permission denied:7种实战解决方案与场景应用
1. 为什么会出现Permission denied错误? 第一次在终端里看到"Permission denied"这个红色警告时,我正试图运行一个刚写好的shell脚本。当时完全懵了,明明文件就在那里,为什么说没权限?后来才发现,…...
软件测试的V模型竟然是有争议的?——软件测评师题目拆解
不知道有多少同学在这个简单的题目栽过跟头,国内、国外对于V模型的定义是有出入的(习题在文末十二五规划教材《软件测试(第2版)佟伟光 主编》 一书中给出的V模型QT官方对应V模型的定义是这样的等级考试用书《软件测评师教程》第二…...
