使用BasicMessageChannel与原生端交互,iOS端

2023-11-26  本文已影响0人  zaq1125

最近初学Flutter,在练习使用BasicMessageChannel与原生端交互的时候,遇到了一个奇怪的问题。Flutter端与iOS端交互的时候,app会闪退。

经过排查,发现问题出现在codec上。
当在Flutter端,使用

static const _channel = BasicMessageChannel("messageChannel", StringCodec());

对应在iOS端应该使用

let channel = FlutterBasicMessageChannel(name:"messageChannel", binaryMessenger: controller.binaryMessenger, codec: FlutterStringCodec())

只有Flutter端使用的是StandardMessageCodec,iOS中的codec才可以不传值。
即:

static const _channel = BasicMessageChannel("messageChannel", StandardMessageCodec());
let channel = FlutterBasicMessageChannel(name:"messageChannel", binaryMessenger: controller.binaryMessenger)

综合来说,BasicMessageChannel的使用就是注意两点,一个是Channel中name的名字要一致,另外一个就是codec也得一致。如此才能正常通信。

上一篇 下一篇

猜你喜欢

热点阅读