๐Ÿ“ฑ Flutter Zoom Meeting Wrapper

A Flutter plugin that allows you to integrate the Zoom Meeting SDK into your Flutter application. This plugin enables users to join Zoom meetings directly within your app without switching to the Zoom app.

Zoom Meeting Banner

โœจ Features

๐Ÿš€ Easy integration with the Zoom Meeting SDK
๐Ÿ”„ Initialize SDK using a JWT token
๐ŸŽฏ Join meetings directly within your app (no Zoom app required)
๐Ÿ“ฑ Android & iOS platform support
๐Ÿ”Š Full audio and video meeting experience
๐Ÿ” Secure authentication flow via JWT

๐Ÿ“ฆ Installation

Add the following to your pubspec.yaml file:

dependencies:
  flutter_zoom_meeting_wrapper: ^0.0.2

โš™๏ธ Mandatory Zoom SDK Setup

๐Ÿค– Android Setup

  1. Add the dependency and run flutter pub get.

  2. Download the Zoom SDK ZIP from the following link:
    ๐Ÿ‘‰ Zoom SDK Download

  3. Extract the ZIP file after downloading.

  4. Copy the libs folder and paste it inside your Flutter pub-cache directory at:

    ~/.pub-cache/hosted/pub.dev/flutter_zoom_meeting_wrapper-0.0.2/android/
    

    ๐Ÿ” Replace 0.0.2 with the version youโ€™re using, if different.

  5. Or run the following command to open the folder directly:

    open ~/.pub-cache/hosted/pub.dev/flutter_zoom_meeting_wrapper-0.0.2/android
    

โš ๏ธ Important: The libs folder must be placed in the correct location for the plugin to function properly.


๐ŸŽ iOS Setup

The iOS integration requires placing the Zoom Meeting SDK frameworks into the pluginโ€™s ios/Frameworks/ directory inside the Flutter pub-cache. Follow these steps:

Step 1 โ€” Download the Zoom iOS Meeting SDK

You can download the iOS SDK using either option below:

Option A โ€” Direct Download (Google Drive)

๐Ÿ‘‰ Download iOS SDK from Google Drive

Extract the ZIP file after downloading.

Option B โ€” Zoom Marketplace

  1. Go to https://marketplace.zoom.us/ and sign in.
  2. Navigate to your appโ€™s credentials page.
  3. Download the iOS Meeting SDK ZIP package.
  4. Extract the ZIP file.

Step 2 โ€” Copy frameworks into the plugin

Open the pub-cache directory for the pluginโ€™s iOS folder:

open ~/.pub-cache/hosted/pub.dev/flutter_zoom_meeting_wrapper-0.0.2/ios/Frameworks

๐Ÿ” Replace 0.0.2 with the version youโ€™re using, if different.

Copy all of the following items from the extracted Zoom SDK into the Frameworks/ folder:

File / Folder Description
MobileRTC.xcframework Core Zoom Meeting SDK
MobileRTCResources.bundle UI resources (required at runtime)
MobileRTCScreenShare.xcframework Screen sharing support
zoomcml.xcframework Zoom companion framework (required)

After copying, the folder should look like:

ios/Frameworks/
โ”œโ”€โ”€ MobileRTC.xcframework
โ”œโ”€โ”€ MobileRTCResources.bundle
โ”œโ”€โ”€ MobileRTCScreenShare.xcframework
โ””โ”€โ”€ zoomcml.xcframework

โš ๏ธ Important: zoomcml.xcframework is required. If it is missing, pod install will fail with an error.

Step 3 โ€” Configure minimum iOS version

In your appโ€™s ios/Podfile, make sure the platform is set to iOS 15.0 or higher:

platform :ios, โ€˜15.0โ€™

Step 4 โ€” Exclude unsupported simulator architectures

The Zoom SDK frameworks include arm64 simulator slices only (no x86_64). Add the following to your ios/Podfileโ€™s post_install block to prevent build errors on Intel Mac simulators:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
  end

  installer.aggregate_targets.each do |aggregate_target|
    aggregate_target.user_project.native_targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings[โ€˜EXCLUDED_ARCHS[sdk=iphonesimulator*]โ€™] = โ€˜$(inherited) i386 x86_64โ€™
        config.build_settings[โ€˜SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPADโ€™] = โ€˜NOโ€™
      end
    end
    aggregate_target.user_project.save
  end
end

Step 5 โ€” Install pods

Run the following from your projectโ€™s ios/ directory:

cd ios && pod install

Step 6 โ€” Add required permissions

Add the following keys to your appโ€™s ios/Runner/Info.plist so the system grants Zoom the access it needs:

<key>NSCameraUsageDescription</key>
<string>Camera access is required for video meetings.</string>

<key>NSMicrophoneUsageDescription</key>
<string>Microphone access is required for audio in meetings.</string>

<key>NSPhotoLibraryUsageDescription</key>
<string>Photo library access is required to share images in meetings.</string>

Step 7 โ€” Build and run on a device

flutter run

โš ๏ธ Note: The Zoom SDK simulator frameworks are arm64-only. Testing on a physical iPhone or iPad is recommended. Running on an Intel-based Mac simulator may not work even with the architecture exclusions above.


๐Ÿ”‘ Getting Started with Zoom SDK

  1. Create a Zoom Developer Account at https://marketplace.zoom.us/
  2. Create an app in the Zoom Marketplace
  3. Get your API Key and API Secret from the app credentials
  4. Use these to generate your JWT token

๐Ÿ”’ Generate JWT Token

To generate a ZOOM JWT token, you can use https://jwt.io/ with the following payload and signature: Payload:

{
  "appKey": "ZOOM-CLIENT-KEY",
  "iat": ANY-TIME-STAMP,
  "exp": ANY-TIME-STAMP, //greater than iat
  "tokenExp": ANY-TIME-STAMP //greater than iat
}

Verify Signature:

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  "ZOOM-CLIENT-SECRET"
)

๐Ÿš€ Usage

Initialize the SDK

First, initialize the Zoom SDK with your JWT token:

import 'package:flutter_zoom_meeting_wrapper/flutter_zoom_meeting_wrapper.dart';

// Initialize Zoom SDK

bool isInitialized = await ZoomMeetingWrapper.initZoom(jwtToken);

Join a Meeting

Once initialized, you can join a Zoom meeting like this:

bool joinSuccess = await ZoomMeetingWrapper.joinMeeting(
  meetingId: "your_meeting_id",
  meetingPassword: "meeting_password",
  displayName: "Your Name",
);

โš ๏ธ Common Issues

JWT Token Invalid: Ensure your API Key and Secret are correct, and check that your system time is accurate.
Failed to initialize SDK: Make sure you have a stable internet connection and valid JWT token.
Cannot join meeting: Verify that the meeting ID and password are correct.

โšก Limitations

๐Ÿ–ผ๏ธ Custom UI overlays are not supported in the current version
๐Ÿ“น Recording meetings is not supported in this plugin
๐Ÿ–ฅ๏ธ Screen sharing functionality is limited to platform capabilities

๐Ÿ‘จโ€๐Ÿ’ป Code Contributors

Zoom Meeting Wrapper contributors