@@ -38,7 +38,7 @@ - (instancetype)initWithRegistrar:(NSObject<FlutterPluginRegistrar>*)registrar {
3838 FUController* controller = [[FUController alloc ] initWithFrame: frame
3939 viewIdentifier: viewId
4040 arguments: args
41- binaryMessenger : _registrar];
41+ registrar : _registrar];
4242 return controller;
4343}
4444
@@ -52,18 +52,40 @@ @implementation FUController {
5252
5353- (instancetype )initWithFrame : (CGRect)frame
5454 viewIdentifier : (int64_t )viewId
55- arguments : (id _Nullable)args
56- binaryMessenger : (NSObject <FlutterBinaryMessenger >*)messenger {
55+ arguments : (id _Nullable)args
56+ registrar : (NSObject <FlutterPluginRegistrar >*)registrar {
5757 if ([super init ]) {
5858 _viewId = viewId;
5959
6060 NSString * channelName = [NSString stringWithFormat: @" unity_view_%lld " , viewId];
61- _channel = [FlutterMethodChannel methodChannelWithName: channelName binaryMessenger: messenger];
61+ _channel = [FlutterMethodChannel methodChannelWithName: channelName binaryMessenger: registrar.messenger];
62+ __weak __typeof__ (self) weakSelf = self;
63+ [_channel setMethodCallHandler: ^(FlutterMethodCall* call, FlutterResult result) {
64+ [weakSelf onMethodCall: call result: result];
65+ }];
6266
6367 }
6468 return self;
6569}
6670
71+ - (void )onMethodCall : (FlutterMethodCall*)call result : (FlutterResult)result {
72+ if ([[call method ] isEqualToString: @" postMessage" ]) {
73+ [self postMessage: call result: result];
74+ } else {
75+ result (FlutterMethodNotImplemented);
76+ }
77+ }
78+
79+ - (void )postMessage : (FlutterMethodCall*)call result : (FlutterResult)result {
80+ NSString * object = [call arguments ][@" gameObject" ];
81+ NSString * method = [call arguments ][@" methodName" ];
82+ NSString * message = [call arguments ][@" message" ];
83+
84+ UnityPostMessage (object, method, message);
85+
86+ result (nil );
87+ }
88+
6789- (UIView*)view {
6890 _uView = [[FlutterUnityView alloc ] init ];
6991 if ([UnityUtils isUnityReady ]) {
0 commit comments