最近准备使用融云的 Flutter SDK,所以顺便记录一下。

融云 Flutter IM SDK 地址:传送门

融云的 Flutter SDK 是基于 融云 IMLib 层做的封装,封装了 IMLib 的部分接口提供给 Flutter 开发者使用。此文章只介绍了 Flutter 层做的一些操作。

目录结构

整体 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 目录开始分析

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

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

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

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

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

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

info: 其实就是对象 model 类

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

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

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

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

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

type_util.dart:略

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

与原生层的交互

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

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

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

原生层

Android:

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

iOS:

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

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

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

整体看来不难,搞起~

融云文档:传送门

融云 Flutter IM SDK 解析相关推荐

  1. 融云即时通讯SDK集成 – 定制UI(二) ——添加自定义表情库

    融云即时通讯SDK集成 – 定制UI(二) --添加自定义表情库 背景: 最近公司新上的app要加上即时通讯的功能, 自己快速实现一个当然是不可能的了(项目deadline也顶不住哇).就从各家成熟的 ...

  2. 融云即时通讯SDK集成 -- 定制UI(二) ——添加自定义表情库

    背景: 最近公司新上的app要加上即时通讯的功能, 自己快速实现一个当然是不可能的了(项目deadline也顶不住哇).就从各家成熟的SDK厂商选来选去的, 各有各的好也各有各的不足.最后点兵点将,选 ...

  3. 融云聊天--web SDK API

    因为产品需求,需要有聊天功能,客服功能.用的是融云的,他把什么方法都集成好了,用起来很方便.并且是免费的.但是第一次接触,并不是那么顺利,并且在网上搜不到相关核心资料,只能硬着头皮看文档,实在没办法就 ...

  4. 融云IM iOS sdk 集成 一篇就够了

    融云IM简介 融云的定位是只专注即时通讯的消息发送功能,融云服务器不会维护用户的好友关系及群组关系,这就需要集成的业务系统来管理用户的好友关系与群关系等. 通过融云,只需要知道目标用户的targetI ...

  5. 关于融云 SDK 在使用 p8 证书的坎坷~

    s 关于融云 SDK 在使用 p8 证书的坎坷~ 新上的项目使用了融云的 IM SDK,但在项目集成 APNs 推送的时候,尝鲜使用了一下开发者后台的 p8 证书,此文记录使用 p8 的辛酸史~ P8 ...

  6. 融云直播 SDK 2.0 上线,轻松获得视频直播能力

    近日,融云直播 SDK 2.0 正式上线.开发者通过调用贴近直播业务的 API,两步即可为自己的 APP 添加视频直播能力. 同时,在连麦互动成为直播业务必备能力的当下,融云直播 SDK 2.0 封装 ...

  7. 作为小白接融云 IM SDK 新路体验~

    前提说明 应项目需求,实现即时通讯功能,业务场景相对单一,仅有单聊场景.选用的是融云的 IM SDK. 作为小白的初期心路历程 由于本人之前没有了解过即时通讯初期了解还是费了不少时间的.蓝瘦~ 话不多 ...

  8. 创新模式驱动生产力提升,融云社交场景化 SDK 探索

    农具的大量使用把人类从狩猎采集社会带到了农业社会:蒸汽机的创新和广泛应用,推动了第一次工业革命,带来了工业经济的蓬勃发展:电子信息技术的发展又驱动人类进入信息社会. 大到一个经济时代,小到一个行业周期 ...

  9. 融云SDK实现类QQ即时通讯的前端开发

    一.概述 接到一个需求,需要在我们的客户端里实现类似QQ的社交功能,以方便玩家之间的沟通互动.我们的客户端是C++实现的,在开会讨论考虑到成本和时间问题,实现这个功能的任务交个了前端.为了简化说明,我 ...

最新文章

  1. 综述 | 森林微生物组:多样性,复杂性和动态变化(IF:11.3)
  2. win10有自带测试软件吗,使用windows10自带工具测试系统内存
  3. 年末裁员事件背后的启示录(1)
  4. sphinx是支持结果聚类的——WHERE、ORDER BY和GROUP BY
  5. flash builder 4.7 debug via usb device iPhone 4s - device not found
  6. MySQL 关联表批量修改(数据同步)
  7. 辨析ADKJVMJREJDKADT
  8. T-SQL查询进阶—理解SQL Server中的锁
  9. Atitit 扩大个人影响力和宣传目录1. 发文舆论阵地 11.1. 简书 知乎 csdn等 11.2. Ifttt出发同步 11.3. 问答平台 知乎 quaro 11.4. Tik
  10. K歌、短视频技术最佳实践——“唱吧”音视频技术探索
  11. mtk刷机工具sp flash tool_qpst刷机(翻到高中刷机时的记录,想来qpst对现在玩机的人也有用吧...
  12. 天涯怎么引流到qq?天涯社区如何靠发帖子引流?
  13. 新商业模式的“分歧者”——汇新云
  14. php liger 表格排序,jQuery LigerUI 使用教程表格篇(1)
  15. 医院私有云架构统一灾备中心建设最佳实践
  16. 网页游戏制作html5,利用HTML5 Canvas制作一个简单的打飞机游戏
  17. itext 生成pdf 化学表达式或者字符的上标,下标不显示
  18. c# HttpClient 获取cookie
  19. php 获取当天是星期几,php获取时间是星期几代码
  20. python modbus tk 库_python modbus_tk库 学习记录

热门文章

  1. 北京单位申请小客车指标条件
  2. 单相交流电和三相交流电概念扫盲
  3. mininet应用实践
  4. vegeta 压测使用简单介绍
  5. Ubuntu 中运行Dropbox
  6. 使用深度学习预测员工流失率
  7. 最全的mycat配置教程
  8. 百度 android tts sdk,百度Android语音合成(TTS)SDK使用方法
  9. [数图] 实验八 形态学图像处理
  10. 机房动环状态综合触摸屏监控解决方案