Setup channels during IntegrationTest registration on iOS (#123729)

Setup channels during IntegrationTest registration on iOS
diff --git a/packages/integration_test/example/ios/RunnerTests/RunnerTests.m b/packages/integration_test/example/ios/RunnerTests/RunnerTests.m
index 820497d..4a896b3 100644
--- a/packages/integration_test/example/ios/RunnerTests/RunnerTests.m
+++ b/packages/integration_test/example/ios/RunnerTests/RunnerTests.m
@@ -39,10 +39,6 @@
 
 @implementation FakeIntegrationTestPlugin
 @synthesize testResults;
-
-- (void)setupChannels:(id<FlutterBinaryMessenger>)binaryMessenger {
-}
-
 @end
 
 #pragma mark - Behavior tests
diff --git a/packages/integration_test/ios/Classes/FLTIntegrationTestRunner.m b/packages/integration_test/ios/Classes/FLTIntegrationTestRunner.m
index 286465c..a6c57df 100644
--- a/packages/integration_test/ios/Classes/FLTIntegrationTestRunner.m
+++ b/packages/integration_test/ios/Classes/FLTIntegrationTestRunner.m
@@ -26,13 +26,6 @@
 
 - (void)testIntegrationTestWithResults:(NS_NOESCAPE FLTIntegrationTestResults)testResult {
   IntegrationTestPlugin *integrationTestPlugin = self.integrationTestPlugin;
-  UIViewController *rootViewController = UIApplication.sharedApplication.delegate.window.rootViewController;
-  if (![rootViewController isKindOfClass:[FlutterViewController class]]) {
-    testResult(NSSelectorFromString(@"testSetup"), NO, @"rootViewController was not expected FlutterViewController");
-  }
-  FlutterViewController *flutterViewController = (FlutterViewController *)rootViewController;
-  [integrationTestPlugin setupChannels:flutterViewController.engine.binaryMessenger];
-
   // Spin the runloop.
   while (!integrationTestPlugin.testResults) {
     [NSRunLoop.currentRunLoop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1.0]];
diff --git a/packages/integration_test/ios/Classes/IntegrationTestPlugin.h b/packages/integration_test/ios/Classes/IntegrationTestPlugin.h
index 4836339..e9cbd66 100644
--- a/packages/integration_test/ios/Classes/IntegrationTestPlugin.h
+++ b/packages/integration_test/ios/Classes/IntegrationTestPlugin.h
@@ -22,9 +22,7 @@
 @property (copy, readonly) NSDictionary<NSString *, UIImage *> *capturedScreenshotsByName;
 
 /** Fetches the singleton instance of the plugin. */
-+ (IntegrationTestPlugin *)instance;
-
-- (void)setupChannels:(id<FlutterBinaryMessenger>)binaryMessenger;
++ (instancetype)instance;
 
 - (instancetype)init NS_UNAVAILABLE;
 
diff --git a/packages/integration_test/ios/Classes/IntegrationTestPlugin.m b/packages/integration_test/ios/Classes/IntegrationTestPlugin.m
index fc2dc54..b3ac581 100644
--- a/packages/integration_test/ios/Classes/IntegrationTestPlugin.m
+++ b/packages/integration_test/ios/Classes/IntegrationTestPlugin.m
@@ -25,7 +25,7 @@
   NSMutableDictionary<NSString *, UIImage *> *_capturedScreenshotsByName;
 }
 
-+ (IntegrationTestPlugin *)instance {
++ (instancetype)instance {
   static dispatch_once_t onceToken;
   static IntegrationTestPlugin *sInstance;
   dispatch_once(&onceToken, ^{
@@ -45,19 +45,9 @@
 }
 
 + (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar> *)registrar {
-  // No initialization happens here because of the way XCTest loads the testing
-  // bundles.  Setup on static variables can be disregarded when a new static
-  // instance of IntegrationTestPlugin is allocated when the bundle is reloaded.
-  // See also: https://github.com/flutter/plugins/pull/2465
-}
-
-- (void)setupChannels:(id<FlutterBinaryMessenger>)binaryMessenger {
-  FlutterMethodChannel *channel =
-  [FlutterMethodChannel methodChannelWithName:kIntegrationTestPluginChannel
-                              binaryMessenger:binaryMessenger];
-  [channel setMethodCallHandler:^(FlutterMethodCall *call, FlutterResult result) {
-    [self handleMethodCall:call result:result];
-  }];
+  FlutterMethodChannel *channel = [FlutterMethodChannel methodChannelWithName:kIntegrationTestPluginChannel
+                                                              binaryMessenger:registrar.messenger];
+  [registrar addMethodCallDelegate:[self instance] channel:channel];
 }
 
 - (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result {