ios 开发

Flutter_Channel

2022-12-24  本文已影响0人  iOS小洁

Platform Channel 机制

Platform Channel机制用来实现Flutter与原生的通信。Platform Channel通讯是通过消息传递的方式进行。工作原理类似于二进制协议开发的网络服务

Flutter Channel

Flutter提供了三种Channel:

关键成员变量

1、name

每个Channel唯一标志,通过name区分多个channel

2、messenger:BinaryMessager

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

创建一个Channel后,不论是通过设置代理还是设置handler回调来处理消息。最终都会为该Channel绑定一个FLutterBinaryMessageHandler。并且是以name为key,保存在一个Map结构中。当接收到消息后,会根据消息中携带的name取出对应的FLutterBinaryMessageHandler,并交由BinaryMessenger处理

3、codec编解码器

Flutter中采用二进制字节流作为数据传输协议。codec负责二进制编解码

messageCodec:对message进行编解码,用于二进制数据与基础数据之间的编解码,有多中实现

FlutterMethodCodec:对FlutterMethodCall编解码。比FlutterMessageCodec多了两个处理调用结果的方法

Handler消息处理

Handler用于处理经过Codec编码后的消息。在使用Channel时需要为其设置对应的Handler

typedef void (^FlutterMessageHandler)(id _Nullable message, FlutterReply callback);
typedef void (^FlutterMethodCallHandler)(FlutterMethodCall* call, FlutterResult result);
@protocol FlutterStreamHandler
- (FlutterError* _Nullable)onListenWithArguments:(id _Nullable)arguments
                                       eventSink:(FlutterEventSink)events;
- (FlutterError* _Nullable)onCancelWithArguments:(id _Nullable)arguments;
@end
上一篇 下一篇

猜你喜欢

热点阅读