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

最近初学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也得一致。如此才能正常通信。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容