融云fluttersdk,跨平台开发的真香之选

融云 融云     2022-12-03     500

关键词:

Flutter 可能是最受欢迎的跨平台框架。关注【融云全球互联网通信云】了解更多

作为 Google 2018 年正式推出的构建 UI 工具包,Flutter 支持一套代码库高效构建多平台应用;使用 Dart 为开发语言,利用 Skia 绘图引擎,直接通过 CPU、GPU 进行绘制,不需要依赖任何原生的控件。

谷歌在 2022 开发大会上正式推出 Flutter 3.0,并宣布目前已有超过 50 万个应用程序是用 Flutter 建立的。从我们熟悉的微信,到出海巨头 SHEIN 以及大量行业和公共机构应用,越来越多开发者采用它构建应用程序。

融云

为了助力开发者更加简单快速地集成 IM 和 RTC 相关功能,融云提供 Flutter SDK,为开发者带来更友好、更简便的即时通讯和实时音视频能力。


Flutter 为何如此受青睐?


多平台的解决方案

在 Flutter 3.0 发布后,Flutter 已经支持 iOS、Android、Web、Windows、Mac 以及 Linux 六个平台,开发者可以使用一套代码库在所有的平台进行运行,使得 Flutter 在跨平台的解决方案上有了更强的竞争力。


高性能的渲染方案

相比其他跨平台方案,Flutter 基于 Skia 2D 硬件加速图形引擎封装的渲染方案,依赖系统的图形绘制,最大程度保证了多平台的一致性,且渲染效率相比原生性能相差无几。


丰富社区生态

截至目前,Flutter GitHub 上已经有 144K个Star,官方仓库 pub.dev 已经上传了大约 3W 个插件,包含了常用的各种功能。

融云的主要功能都提供了相关的 Flutter 插件并上传到了官方仓库。

另外,在融云出品的程序员综艺《猿桌派》中,来自知乎的张彦瑞还从开发者的角度分享了使用 Flutter 的另一重吸引力:

“Flutter 是开源的,让我们有机会对 UI 系统的构建、内存管理、编译等进行深挖。即使我们以后不用 Flutter 了,也可以通过它去了解一套语言是怎么构建的,程序是怎么加载的,整个树是怎么构建的,渲染引擎是怎么做的。这些都是可以让我们举一反三的底层宝藏。”


融云相关插件及优势  


[rongcloud_im_wrapper_plugin]

rongcloud_im_wrapper_plugin 是基于融云原生 IM SDK 封装的 Flutter 插件,目前已经支持原生 IM 的所有功能,包括单聊、群聊、聊天室、超级群,并提供了全新的自定义消息模式。开发者集成后仅需几步即可快速实现 IM 通信功能。


[rongcloud_rtc_wrapper_plugin]

rongcloud_rtc_wrapper_plugin 是基于融云原生 RTC SDK 封装的 Flutter 插件,提供了原生 RTC SDK 的主要功能,支持会议模式、直播模式。开发者基于此插件可以快速集成音视频能力。


[rongcloud_call_wrapper_plugin]

rongcloud_call_wrapper_plugin 是基于融云 CallLib 封装的 Flutter 插件,可支持开发者快速集成 1V1 呼叫功能。


完整的生命周期

Flutter SDK 提供完整的生命周期管理,保证开发者在使用 SDK 时,资源都能被正常释放,减少异常情况的发生。

开发者在使用时都需要创建相关的引擎对象,利用引擎对象完成各种功能接口的调用,在使用结束时需对引擎对象进行销毁。

// 创建引擎对象

RCIMIWEngineOptions options = RCIMIWEngineOptions.create();

RCIMIWEngine engine = await RCIMIWEngine.create(appkey, options);


// 调用 IM 功能

engine.connect(

token,

timeout,

);

...


engine.disconnect(receivePush);


// 销毁引擎对象

engine.destroy();


增强接口的识别度和易用性

相比原生的 SDK,Flutter SDK 在封装接口的同时,还对接口进行了重新设计组合,在减少接口数量的同时也保证了功能的完整性。

以原生 IM SDK 获取消息为例,原生 SDK 提供:

获取本地消息的接口:getHistoryMessages

获取远端消息的接口:getRemoteHistoryMessages

Flutter SDK 将上面接口整合为一个接口 loadMessages, 同时提供了一个获取的策略,根据开发者传入的参数来确认是获取本地或者是远端的消息。

原生 SDK 获取本地消息:

channelEngine.getHistoryMessages(type, targetId, channelId, sentTime, count, order, new IRongCoreCallback.ResultCallback<List<Message>>() 

@Override

public void onSuccess(List<Message> messages)


@Override

public void onError(IRongCoreEnum.CoreErrorCode e)

);

原生 SDK 获取远端消息:

channelEngine.getRemoteHistoryMessages(type, targetId, channelId, option, new IRongCoreCallback.ResultCallback<List<Message>>() 

@Override

public void onSuccess(List<Message> messages)




@Override

public void onError(IRongCoreEnum.CoreErrorCode e)



);

Flutter SDK 支持开发者通过 policy 传入对应的获取策略,包括只获取本地、只获取远端、获取本地和远端:

engine?.onMessagesLoaded = (

int? code,

RCIMIWConversationType? type,

String? targetId,

String? channelId,

int? sentTime,

RCIMIWTimeOrder? order,

List<RCIMIWMessage>? messages,

)

int? code = await engine?.loadMessages(

type,

targetId,

channelId,

sentTime,

order,

policy,

count,

);


统一接口调用方式

Flutter SDK 不再使用传统的功能对象调用相关功能、各个功能模块相互分割的封装接口模式。

这种模式接口分散,开发者无法准确判断出 SDK 的某个接口应该在哪个功能模块下,造成了一定的学习成本。

Flutter SDK 在接口设计上,不再延续这种模式,而是将所有的接口进行精简,然后统一到一个接口类中,我们称这个为平铺接口

在使用平铺接口时,开发者可以在这个接口类调用到 SDK 的任何功能,从而减少开发者对 SDK 的学习成本,将更多的精力聚焦于业务本身。


快速集成融云 Flutter SDK

以 IM 能力为例,展示快速集成融云 Flutter SDK 的相关步骤。


初始化 SDK

RCIMIWEngineOptions options = RCIMIWEngineOptions.create();

RCIMIWEngine engine = await RCIMIWEngine.create(appkey, options);


链接融云并设置监听

RCIMIWEngineOptions options = RCIMIWEngineOptions.create();

RCIMIWEngine engine = await RCIMIWEngine.create(appkey, options);


收发消息

engine.onMessageReceived = (

RCIMIWMessage? message,

int? left,

bool? offline,

bool? hasPackage,

)

// 收到消息

;


RCIMIWTextMessage? textMessage = await engine.createTextMessage(

conversationType,

targetId,

channelId,

text,

);

engine.sendMessage(message);


退出登录并销毁

engine.disconnect(receivePush);

engine.destroy();


2019,“数据重力”将影响企业数字化转型平台之选

...性经营性数据和MES生产制造等关键性生产数据,到研发、开发、新业务拓展等创新型业务数据,再到物联网、营销、电商等边缘和外部连接数据,以及GDPR等各国数据法规遵从,企业的数据中心基础设施需要一个能够满足多样化... 查看详情

springboot库存管理系统,拿来学习真香

...是一款面向中小企业的供销链管理系统,基于J2EE快速开发平台Jeecg-Boot开发,采用前后端分离架构:SpringBoot2.x,AntDesign&Vue,Mybatis-plus,Shiro,JWT。项目基于十多年的中小企业管理经验,由ERP领域... 查看详情

apicloud开发者进阶之路|uipickerview模块示例demo(代码片段)

...频接口,发送文件接口。 rongCloud2  概述 融云是国内首家专业的即时通讯云服务提供商,专注为互联网、移动互联网开发者提供即时通讯基础能力和云端服务。通过融云平台,开发者不必搭建服务端硬件环境,就... 查看详情

推荐一款开源的shell装逼神器,真香!

...NuShell专注于实现以下目标:1、创建具有现代感的灵活的跨平台Shell2、允许你将命令行应用程序与可理解数据结构的Shell进行混合和匹配3、具有现代命令行应用程序提供的用户体验优化目前,NuShell已经在Github上标星13.9K,累计分... 查看详情

一款基于springboot开发的oa项目,已开源,真香..

...公自动化系统,使用Maven进行项目管理,基于springboot框架开发的项目,mysql底层数据库,前端采用freemarker模板引擎,Bootstrap作为前端UI框架,集成了jpa、mybatis等框架。作为初学springboot的同学是一个很不错的 查看详情

如何在不同平台上搭建flutter开发环境(代码片段)

...实际操作来演示如何搭建Flutter开发环境。整体思路1.下载FlutterSDK包并且解压到某个目录中,此目录就是SDK的安装目录;注意:平台不同SDK也不同;2.把SDK的安装目录添加到环境变量中,安装完成后运行flutterdoctor命令检查环境是... 查看详情

flink从入门到真香(flink介绍)(代码片段)

...态管理(锁还有恢复机制等等)框架全部封装好了,作为开发来说就只需要关心自己要实现的业务就可以了以下内容来自官网,从3个方面介绍Flink:架构ApacheFlink是一个框架和分布式处理引擎,用于在无边界和 查看详情

5与伦比,不2之选,菊风视频能力平台r22c02版本正式发布

近期,菊风正式发布视频能力平台R22C02版本,作为首家真正意义上实现全平台互通私有化部署的音视频解决方案提供商,菊风该版本在功能新增、系统性能提升方面都有重要更新,旨在为我们的合作伙伴提供更加... 查看详情

5与伦比,不2之选,菊风视频能力平台r22c02版本正式发布

近期,菊风正式发布视频能力平台R22C02版本,作为首家真正意义上实现全平台互通私有化部署的音视频解决方案提供商,菊风该版本在功能新增、系统性能提升方面都有重要更新,旨在为我们的合作伙伴提供更加... 查看详情

使用融云sdk在apicloud平台实现单人多人音频通话

...思路使用之前必须先获取token、init、connect,同时需要到融云后台开通音视频通话功能(开通或者关闭30分钟后生效)。 单人通话逻辑比较简单,主要会用到didReceiveCall、didConnect、didDisconnect等三个事件。主要通话流程:(1)... 查看详情

安卓系统pk浏览器:物联网开发,哪个才是最佳之选?

...头风口。与此同时,各类转战物联网的企业不在少数,而开发物联网产品首要面临的就是操作系统的选择问题。一个恰到好处的操作系统给企业带来的影响不仅仅是产品最终是否优秀,也深远影响到企业从成本到研发、再到上市... 查看详情

nacos真香,从零到一学起来(代码片段)

Nacos是阿里巴巴开源的微服务管理平台,可以帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。这篇文章主要来讲一下Nacos作为配置中心和注册中心的使用。1安装1.1linux下安装首先搭建一套单机版的Nacos... 查看详情

自动化测试工具软测界的不二之选,还不快速来了解

目录引言:前言:一.龙测AI-TestOps云平台使用教程1.如何登录龙测AI-TestOps云平台登录方法①登录方法②2.龙测AI-TestOps云平台界面布局 3.龙测AI-TestOps云平台菜单功能①创建项目②应用管理③设备管理④订单二.总结引言࿱... 查看详情

flutter开发环境配置-windows(代码片段)

下载FlutterSdk系统要求:安装运行Flutter,开发环境必须满足以下要求:操作系统:Windows7或者以上版本,64位机器硬盘空间:不包括IDE和工具在内,至少需要400M软件工具:WindowsPowerShell5.0或者以上Windows版Git2.x,请确保Git可以正常... 查看详情

码云企业版企业级软件协作开发管理平台

https://gitee.com/enterprises 码云企业版企业级软件协作开发管理平台有序规划和管理软件研发全生命周期体验演示版 免费开通企业版码云Gitee通过ISO27001安全认证与ISO9001质量认证超过10万企业的信任之选精于代码托管 便捷... 查看详情

十年开发经验java架构师,真香!(代码片段)

并发编程三大特性原子性一个操作或者多次操作,要么所有的操作全部都得到执行并且不会受到任何因素的干扰而中断,要么所有的操作都执行,要么都不执行。对于基本数据类型的访问,读写都是原子性的【long... 查看详情

flutter真香,我用它写了个桌面版json解析工具

参考技术AFlutter支持稳定的桌面设备开发已经一段时间了,不得不说,Flutter多平台支持的特性真的很香。我本人并没有任何桌面开发的经验,但仍然使用Flutter开发出了一个桌面版小程序,功能很简单,就是对输入的json做格式化... 查看详情

融云亮相gdg谷歌女性开发者大会揭秘imsdk网络优化策略

...)发起并组织,旨在鼓励和促进女性在技术领域的参与。融云作为云通信技术领导者,在大会上就“即时通讯SDK的网络优化策略”主题开展演讲,与各界分享多 查看详情