推广

融云 Flutter IM SDK 解析

iseeyu3年前 (2024-02-22)推广136

image.png

整体 SDK 的结构规规矩矩,核心内容参考红色箭头即可。

SDK 层包含 三个目录:
android:此目录包含了和原生 SDK 交互的所有 Java 文件
ios:此目录包含了和原生 SDK 交互的所有 oc 文件
lib: 此目录为使用 dart 编写的 Flutter SDK 文件

其他目录:
doc:主要是融云开发者提供的一些文档相关
example:是融云开发者基于此 SDK 提供的一个简单示例,整体较为简陋,且有细微 bug,仅供参考

FunctionList.md 是融云开发者提供的一个功能清单,
大体如下:

# RongCloud IM Flutter SDK 功能清单

## 连接

初始化

连接

断开连接

连接状态兼容

## 配置

设置服务器地址( im 服务;文件服务)

## 会话

获取会话列表,支持全量获取,分页获取

获取单个会话

删除指定会话



## 消息

当前仅支持 文本消息,语音消息,图片消息,小视频消息

收发消息(可以携带 pushContent)

自定义消息

获取批量本地历史消息

获取单条本地历史消息

获取批量远端历史消息

插入消息

删除批量本地消息

获取未读数

清除指定会话未读数

## 免打扰

设置会话免打扰

获取会话免打扰

## 会话置顶

设置会话置顶

备注:获取会话是可以获取到会话置顶状态

## 黑名单

加入黑名单

移除黑名单

获取黑名单列表

检查特定用户的黑名单状态

## 聊天室

加入聊天室

退出聊天室

获取聊天室信息

都是一些接口层的操作。

剩下的文件基本可以忽略。

解析

我们开始从 lib 目录开始分析

image.png

这两个文件是核心文件,我们所有的调用接口都在这里。

rong_im_client.dart 是最新版本的接口类,我们只关心这个即可。

rong_im_plugin.dart 是旧版本的接口类,已经废弃。

common_define.dart 是定义了 SDK 内使用的所有枚举和状态码。

method_key.dart是定义了 Flutter SDK 和原生层进行交互时标识的唯一的常量字符串。

然后就是剩下的三个文件目录:

image.png

info: 其实就是对象 model 类

image.png

message: 这个是 Flutter SDK提供的所有内置的消息类型,包括聊天室KV消息、合并消息、文件消息、GIF消息、图片消息、位置消息、撤回消息、引用消息、图文消息、视频消息、文本消息、语音消息。

其中有一个比较特殊的 dart 类就是 message_content.dart, 这个类是所有消息的基类。

每个消息都需要继承此类,并复写里面的方法进行编解码。

image.png

util: 这个目录就是一个工具目录。

message_factory.dart 主要是进行消息封装,字典转模型,模型转字典,根本原因我猜就是 Flutter 和 原生仅有的交互类型限制。

type_util.dart:略

以上就是 SDK 在 Flutter 层做的所有的操作,内容整体不多,而且所有代码都是开源的,看看基本上都了解。

与原生层的交互

image.png

整体都是通过 invokeMethod 与原生进行通信的,后面的key 就是之前说的常量字符串,用来保证唯一性。

而在 iOSAndroid 都提供了对应的定义。

image.png

image.png

并通过触发 iOS 和 Android 层对应的方法来进行处理。

image.png

image.png

原生层

Android:

image.png

整体核心的处理都在 RCIMFlutterWrapper.java 这个类处理了 dart 代码传递过来的数据,并与融云 IMLib 的 SDK 进行了处理。

iOS:

image.png

同样,iOS 的核心代码也都在 RCIMFlutterWrapper.m 这个类处理。具体内容大家可以自己看一下。

到此整个内容我们也就大体明白了。

整体看来其实就是 flutter 中 rong_im_client.dart 和 原生的两个 Wrapper 类做交互,其他的都是助攻。

整体看来不难,搞起~

融云文档:传送门

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/56403.html

相关文章

seo优化新手工作有三个点

seo优化新手工作有三个点

第一就是文章的原创度不高! 新手站长刚刚做的时候,就是非常想让自己的网站在短时间内达到一个比较好的效果,所以大家可能也就是对这个文章的数量比较要求,自己就会去采集一些资料等等,采集资料虽然说是好的,但是从根本上来说,其实并不是特别的好,而且采集资料有的时候可能也会使得我们的一些相...

[seo网站推广]单页面网站的推广引流技巧有哪些

[seo网站推广]单页面网站的推广引流技巧有哪些

单页面网站优化,顾名思义就是网站独立的一个页面SEO,全站只有一个页面,通常来说应用于竞价推广。那么,单页面网站的推广引流技巧有哪些呢,总结以下几点: 单页网站的推广引流技巧1.适合论坛推广引流,将网站的链接发布到一些行业比较接近的论坛,在论坛中要体现自己的专业性,注重质量,帖子会一直存活,然后...

企业新闻营销推广应该怎么做?

新闻是企业正确维护正面形象的一种模式。这种模式可以更多角度和层面诠释企业,内涵,产品机理等,同时可以自由选题,企业可以针对自身的优势撰写稿件,但是不能过于主观,必须用客观的方式让客户了解企业。但是企业必须持续做新闻营销,这样才能让品牌和产品覆盖全网,让客户在搜索时,首页都能...

二十个正能量励志语录

二十个正能量励志语录 一、别为过去哭泣,过去已经过去。别为未来焦虑,未来还未到来。要活在当下,还要活的漂亮。二、不论你在什么时候开始,重要的是开始之后就不要停止;不论你在什么时候结束,重要的是结束之后就不要悔恨。三、命运给你一个比别人低的起点是想告诉你,让你用你的一生...

网站排名想要稳定。

网站排名想要稳定。

广州网站开发公司整理出来6大技巧,供大家参考, 1、内容更新。首先必须保持网站的活跃度,每天必须有新内容更新,增加相关新闻或者热点内容,不仅保持网站活跃度,还得让网站有新鲜感,也就说要原创有价值的内容;其次,就是网站内容更新的规律,要定时定量,与蜘蛛形成规律,方便搜索引擎蜘蛛索引。 2、内链建设...

seo网站优化途径之用户体验度和外链规划。

seo网站优化途径之用户体验度和外链规划。

seo网站优化的重要途径就是用户体验度以及外链,网站优化就是搜索引擎优化排名,不管哪个搜索引擎都是将用户体验度放在首位的,在用户体验度好是优化的重要条件,还有另一个条件就是发布外链。下面我们就seo网站优化,影响用户体验度的因素以及发布外链的技巧进行介绍。 一、影响用户体验的因素 ① 违规广...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片