What is the correct method for implementing the iOS Swift SDK via a Flutter plugin?

Flutter plugins are a great way to run native code from a Flutter app, but they are configured differently than if the native code were to be written directly within Flutter apps. See the template here - it shows what the iOS module for a plugin looks like

I should mention that this plugin will not be published publicly - it is being developed internally (by me) at my company; we have a trial license and are working on obtaining a full one.

I will also add that I’ve successfully configured the Android SDK with this plugin and it works very well.

Version 5.2.42037.1112

I know you guys may not know much about Flutter, but I wanted to ask my questions here first before go to other resources.

Here are the technical questions I have for now:

  1. Do the Zoom libraries (MobileRTC.framework and MobileRTCResources.bundle) only need to be imported into the plugin target (which would be whatever the creator has named the plugin), or do they need to be imported to the Pods-Runner target, and perhaps the Flutter target as well? I doubt it, but I’m not totally clear on this.
  2. Does the iOS SDK handle launching the Meeting UI when calling meetingService.joinMeeting() without developers needing to declare any UI related code, like a View or something? For Android I know it does that, but I’m less familiar with iOS coding, and since Flutter iOS plugins don’t build any UI out of the box (it can be done, but differently - see here), the manner of setting up the code is throwing me off a little bit; since the code in the documentation deals with declaring a UIWindow, and the class extends UIResponder and UIApplicationDelegate, I’m not clear on this.
  3. Also, since Flutter iOS plugins do not have an AppDelegate, the extension AppDelegate: MobileRTCAuthDelegate isn’t applicable. Would replacing it with the plugin’s class name work instead?

I hope you’ll be able to help provide some insight on this.

Thanks.

Hey @GroovinChip,

Thanks for using the dev forum!

We normally do not support things like custom Flutter plugins using the native SDKs. However, I can give you what information I have :slightly_smiling_face::

  1. The MobileRTC.framework and MobileRTCResources.bundle need to be embedded into whatever target they are used to be functional. I am not sure the details of Flutter plugins targeting abilities, but if the MobileRTC.framework is used as a linked library and not an embedded library, it will not work.
  2. The iOS SDK does handle UI for you, but it needs to access a UIWindow object defined within the AppDelegate. The UIResponder class and UIApplicationDelegate protocol are defined by Apple and are used to provide the application with a way to listen to UIKit events and application events, respectively.
  3. MobileRTCAuthDelegate does not necessarily need to be an extension of AppDelegate. Any Class that can conform to the MobileRTCAuthDelegate protocol can be treated as the auth delegate. However, the AppDelegate normally houses the UIWindow that the SDK uses to control UI. It may be possible to implement a UIWindow somewhere else, but I would not recommend it since the SDK was designed with the AppDelegate in mind. It seems like it is possible to implement your own AppDelegate in Flutter: https://stackoverflow.com/questions/52808717/confusion-connecting-ios-portion-of-flutter-app-to-firebase. However, this is out of the scope of the Zoom SDK, so we can not assist there.

I hope this helps!
Thanks!
Michael