最近准备使用融云的 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. C语言网络编程:TCP编程模型
  2. RxLifecycle详细解析
  3. C站最全Python库总结丨标准库+高级库
  4. GitHub进一步了解
  5. 面试官:什么是大事务?小林哥:就是 很大...的...事务??
  6. 深度学习:波士顿房价预测
  7. SpringCache实战遇坑
  8. InDesign 软件教程,如何新建文档?
  9. Java金融计算机计算irr_手把手教你使用金融计算器
  10. offline RL介绍
  11. 相对比性能稳定速度快的香港服务器有哪些
  12. 第一篇——胡咧咧之动漫素材如何最有效最快的查找下载,动漫网站有哪些?
  13. Login.aspx
  14. 【正点原子STM32连载】第四十六章 FATFS实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
  15. win10下搭建grpc 以及demo(idea maven java)
  16. Hystrix 1.5 滑动窗口实现原理总结
  17. CRM系统,覆盖企业多应用场景
  18. AI/计算机志愿填报指南发布!最受关注的终极八问,参考答案在此
  19. 这不仅仅是另一个使用TensorFlow来做MNIST数字图像识别的教程
  20. linux内核修改主频,Linux内核中CPU主频和电压调整 (一)

热门文章

  1. WiFi共享精灵=免费wifi+……
  2. php 实现图形验证码,PHP实现图形验证码案例(1)
  3. 手游服务端框架之后台管理工具
  4. kddcup99预处理matlab,KDD CUP99数据集预处理
  5. 通过PS给人物制作一种打散效果
  6. QQ机器人OPQBot
  7. 2018微策略用户峰会北京站举行 企业级BI魅力无处不
  8. 苏教版小学语文课文(1至6年级)-朗读版
  9. 集美大学单片机c语言,2018年集美大学单片机原理及其应用考研大纲
  10. 使用C# winform 制作一个按钮可自适应屏幕大小的 简易加减乘除计算器