Flutter与iOS原生通信方式

简介: Flutter与iOS原生通信方式

三种主要通信方式

  • MethodChannel:与原生相互进行方法调用,用于方法调用(双向)
  • BasicMessageChannel:与原生相互发送消息,用于数据传输(双向)
  • EventChannel:原生发送消息,Flutter接收,用于数据流通信(单向)

具体实现

1. MethodChannel

使用方式以及交互流程,请查看截图中代码以及注释OC初始化相关代码

@interface ViewController ()<FlutterStreamHandler>
@property(strong, nonatomic) NSTimer *timer;
@property(strong, nonatomic) FlutterEngine *flutterEngine;
@property(strong, nonatomic) FlutterViewController *flutterVC;
@property(strong, nonatomic) FlutterBasicMessageChannel *basicMessageChannel;
@property(strong, nonatomic) FlutterEventChannel *eventChannel;
@property(copy, nonatomic) FlutterEventSink eventSink;
@end

OC懒加载相关代码

- (FlutterEngine *)flutterEngine {
    if (!_flutterEngine) {
        FlutterEngine *engine = [[FlutterEngine alloc] init];
        if (engine.run) {
            _flutterEngine = engine;
        }
    }
    return _flutterEngine;
}
- (FlutterViewController *)flutterVC {
    if (!_flutterVC) {
        _flutterVC = [[FlutterViewController alloc] initWithEngine:self.flutterEngine nibName:nil bundle:nil];
    }
    return _flutterVC;
}
- (FlutterBasicMessageChannel *)basicMessageChannel {
    if (!_basicMessageChannel) {
        //注册FlutterBasicMessageChannel - 并指定名称messageChannelName为basicMessageChannel
        _basicMessageChannel = [FlutterBasicMessageChannel messageChannelWithName:@"basicMessageChannel" binaryMessenger:self.flutterVC.binaryMessenger];
        //监听Flutter发来的消息 - Flutter调用OC回调监听
        [_basicMessageChannel setMessageHandler:^(id  _Nullable message, FlutterReply _Nonnull callback) {
            NSLog(@"OC收到Flutter的FlutterBasicMessageChannel - %@", message);
        }];
    }
    return _basicMessageChannel;
}
- (FlutterEventChannel *)eventChannel {
    if (!_eventChannel) {
        _eventChannel = [FlutterEventChannel eventChannelWithName:@"eventChannel" binaryMessenger:self.flutterVC.binaryMessenger];
        [_eventChannel setStreamHandler:self];
    }
    return _eventChannel;
}

2. BasicMessageChannel

使用方式以及交互流程,请查看截图中代码以及注释3. EventChannel使用方式以及交互流程,请查看截图中代码以及注释运行结果

flutter: 消息内容: OC通过EventChannel向Flutter发送消息(OC参数类型是id), Flutter收到消息数据类型: String

完整代码(github中Flt文件夹里面的内容):
https://github.com/gltwy/public

相关文章
|
3月前
|
前端开发 Android开发 iOS开发
【Flutter前端技术开发专栏】Flutter在Android与iOS上的性能对比
【4月更文挑战第30天】Flutter 框架实现跨平台移动应用,通过一致的 UI 渲染(Skia 引擎)、热重载功能和响应式框架提高开发效率和用户体验。然而,Android 和 iOS 的系统差异、渲染机制及编译过程影响性能。性能对比显示,iOS 可能因硬件优化提供更流畅体验,而 Android 更具灵活性和广泛硬件支持。开发者可采用代码、资源优化和特定平台优化策略,利用性能分析工具提升应用性能。
129 0
【Flutter前端技术开发专栏】Flutter在Android与iOS上的性能对比
|
7天前
|
XML 安全 Android开发
Flutter配置Android和IOS允许http访问
Flutter配置Android和IOS允许http访问
20 3
|
7天前
|
开发工具 iOS开发
解决Flutter运行报错Could not run build/ios/iphoneos/Runner.app
解决Flutter运行报错Could not run build/ios/iphoneos/Runner.app
30 2
|
7天前
|
iOS开发
解决Flutter运行IOS报错:Podfile is out of date
解决Flutter运行IOS报错:Podfile is out of date
20 1
|
7天前
|
iOS开发 Perl
IOS集成flutter_boost 3.0常见问题
IOS集成flutter_boost 3.0常见问题
13 0
|
19天前
|
开发框架 监控 iOS开发
Flutter IOS 打包上架踩坑
Flutter IOS 打包上架踩坑
37 0
|
1月前
|
安全 Shell Android开发
Flutter和Native 通信 pigeon
Flutter和Native 通信 pigeon
|
1月前
|
Dart Android开发 Windows
Flutter和Native 通信 android端
Flutter和Native 通信 android端
|
2月前
|
移动开发 小程序 安全
基础入门-APP架构&小程序&H5+Vue语言&Web封装&原生开发&Flutter
基础入门-APP架构&小程序&H5+Vue语言&Web封装&原生开发&Flutter