美文网首页
iOS Channel原理

iOS Channel原理

作者: 一个半吊子工程师 | 来源:发表于2020-10-10 17:10 被阅读0次

    Flutter提供了三种Channel用作Flutter与iOS原生平台之间的数据传递:

    FlutterBasicMessageChannel

    用作字符串和半结构化的数据传递。

    1、结构化数据:包括预定义的数据类型、 格式和结构的数据, 常见的比如关系型数据库中数据表里的数据。
    2、半结构化数据:具有可识别的模式并可以解析的文本数据文件, 比如XML数据文件。
    3、非结构化数据:没有固定结构的数据, 通常保存为不同类型的文件, 比如文本文档、 图片、 视频等。

    FlutterMethodChannel

    用来调用方法(method invocation),包括从Flutter向原生平台发起方法调用,也支持从原生平台向Flutter发起方法调用

    FlutterEventChannel

    用来支持数据流(streams)通信

    三种Channel分别带来不同的作用。但是在设计上大同小异。都有以下三个成员变量:

    1. name:Channel名称

    作为每个Channel的唯一标志。

    在我们的Flutter应用中,通常会存在多个Platform Channel。那么这些Channel之间就是通过唯一标志name来区分。例如,使用FlutterMethodChannel发起方法调用时,就需要我们为MethodChannel指定对应的标示name。

    1. messenger:消息信使(BinaryMessenger)

    用作消息的发送和接收的工具,主要负责Flutter与原生之间的相互通讯。

    通俗来讲,messenger就是咱们现在的外卖小哥。messenger负责把数据从Flutter送到iOS平台,或者从iOS传输数据到Flutter。尽管Flutter中存在三种不同用途的Channel,但是对应的沟通工具都是BinaryMessenger。”

    1. Codec(编解码器)

    在Channel中,messenger携带的数据需要在Dart层,Native(iOS/Android平台)层中传输,所以就需要一种与平台无关的数据协议。既能支持图片,又能支持文件等资源。因此官方最终采用了二进制字节流作为数据传输协议。

    二进制字节流:发送方需要把数据编码成二进制数据,接收方再把数据解码成原始数据。而负责编解码操作的就是Codec。

    相关文章

      网友评论

          本文标题:iOS Channel原理

          本文链接:https://www.haomeiwen.com/subject/ygdjpktx.html