大数跨境
0
0

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

融云 Flutter SDK,跨平台开发的真香之选 融云全球互联网通信云
2022-09-07
2
导读:简便易用高性能

(点击图片报名融云 2022 社交泛娱乐出海嘉年华


全文 2000 字  预计阅读时间 5 分钟


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();


融云全通信解决方案

IM+RTC+X

全能力多场景,欢迎体验


部分图片源于网络,侵删

文章转载请在后台回复关键词:转载

市场合作:market-cooperation@rongcloud.cn

业务咨询:131 6185 6839

【声明】内容源于网络
0
0
融云全球互联网通信云
领先的全球智能通信云服务商,以通信云 PaaS 和 SaaS 产品,赋能开发者和企业创新。艾瑞权威数据显示,融云 IM 市场份额连续多年稳居第一。
内容 747
粉丝 0
融云全球互联网通信云 领先的全球智能通信云服务商,以通信云 PaaS 和 SaaS 产品,赋能开发者和企业创新。艾瑞权威数据显示,融云 IM 市场份额连续多年稳居第一。
总阅读106
粉丝0
内容747