Skip to content

Daakia-Org/daakia_vc_flutter_sdk

Repository files navigation

Logo

Daakia VC Flutter SDK

Integrate Daakia's video conferencing capabilities into your Flutter applications with ease.

This SDK provides a simple and efficient way to add video conferencing features to your Flutter apps, supporting both Android and iOS platforms.

Supported Platforms

Android | ✅ iOS

Latest Release

v4.4.1 - See CHANGELOG.md for detailed release notes and what's new.

How to use

Installation

add daakia_vc_flutter_sdk: to your pubspec.yaml dependencies then run flutter pub get

  dependencies:
    daakia_vc_flutter_sdk: ^4.4.1

Android

We require a set of permissions that need to be declared in your AppManifest.xml. These are required permissions

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.your.package">
  <!-- Camera & Audio -->
  <uses-feature android:name="android.hardware.camera" />
  <uses-feature android:name="android.hardware.camera.autofocus" />
  <uses-permission android:name="android.permission.CAMERA" />
  <uses-permission android:name="android.permission.RECORD_AUDIO" />
  
  <!-- Network -->
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
  <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
  
  <!-- Bluetooth -->
  <uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
  <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
  <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />
  
  <!-- Foreground Service (Meeting Notifications & Screen Share) -->
  <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
  <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
  <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION" />
  
  <!-- Notifications (Android 13+) -->
  <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
  
  <!-- Storage -->
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
  ...
</manifest>

ℹ️ Permission Details

  • Foreground Service Permissions (new in v4.4.1):

    • FOREGROUND_SERVICE: Required for background meeting notifications
    • FOREGROUND_SERVICE_MEDIA_PLAYBACK: For meeting audio when app is backgrounded
    • FOREGROUND_SERVICE_MEDIA_PROJECTION: Required for screen sharing on Android 10+
  • POST_NOTIFICATIONS: Required for meeting notifications on Android 13+

These permissions are automatically merged from the SDK's manifest. You don't need to manually add them unless your app targets Android versions that require explicit declaration.

🪟 Picture-in-Picture (PiP) Support (Android Only)

Daakia SDK supports Picture-in-Picture (PiP) mode on Android to allow users to continue their meeting while navigating away from the app.

📱 Note: PiP is currently available only on Android. iOS support will be added in a future release.

Android Setup

  1. Update AndroidManifest.xml

    <application>
      <activity
              android:name=".MainActivity"
              android:supportsPictureInPicture="true">
      </activity>
    </application>
  2. Update MainActivity.kt

    Change your activity from:

    import io.flutter.embedding.android.FlutterActivity
    
    class MainActivity: FlutterActivity()

    to:

    import cl.puntito.simple_pip_mode.PipCallbackHelperActivityWrapper
    
    class MainActivity : PipCallbackHelperActivityWrapper()

iOS

Camera and microphone usage need to be declared in your Info.plist file.

<dict>
  ...
  <key>NSCameraUsageDescription</key>
  <string>$(PRODUCT_NAME) uses your camera</string>
  <key>NSMicrophoneUsageDescription</key>
  <string>$(PRODUCT_NAME) uses your microphone</string>

Your application can still run the voice call when it is switched to the background if the background mode is enabled. Select the app target in Xcode, click the Capabilities tab, enable Background Modes, and check Audio, AirPlay, and Picture in Picture.

Your Info.plist should have the following entries.

<dict>
  ...
  <key>UIBackgroundModes</key>
  <array>
    <string>audio</string>
  </array>

For iOS, the minimum supported deployment target is 12.1. You will need to add the following to your Podfile.

platform :ios, '12.1'

You may need to delete Podfile.lock and re-run pod install after updating deployment target.

Usage/Examples

import 'package:daakia_vc_flutter_sdk/daakia_vc_flutter_sdk.dart';

await Navigator.push<void>(
                context,
                MaterialPageRoute(
                  builder: (_) => DaakiaVideoConferenceWidget(
                    meetingId: meetingUID,
                    secretKey: licenseKey,
                    isHost: isHost,
                    configuration: DaakiaMeetingConfiguration (optional),
                  ),
                ),
              );

Use DaakiaVideoConferenceWidget to start the meeting.

Parameters

To run the DaakiaVideoConferenceWidget, you will need to pass the following parameters:

  • meetingId (String):
    This parameter is required to join a specific meeting. It helps identify the unique meeting to which the user will connect.

  • secretKey (String):
    This is a license key that grants access to the meeting service. It is necessary for secure access.

  • isHost (bool, optional):
    This optional parameter defines the user's role. When set to true, the user will join as the host of the meeting; otherwise, they will be a participant.

  • configuration (DaakiaMeetingConfiguration, optional):

Provides advanced customization like metadata and participant name behavior.
For full details, see DaakiaMeetingConfiguration Documentation

Obtaining Meeting ID and License Key

To use the Daakia Video Conference SDK, you will need a meetingId and a secretKey (license key). These are required for accessing and initiating meetings.

How to Obtain:

  • Contact Us: Reach out to us directly at contact@daakia.co.in. Our team will assist you in setting up your account and providing the necessary credentials.
  • Visit Our Website: You can also find more information and request access by visiting our website: https://www.daakia.co.in/.

We will guide you through the process of creating meetings and obtaining your unique license key.

📊 Optional: Datadog Logging

The SDK supports Datadog integration for advanced logging, monitoring, and crash reporting.
This is optional — your app will run normally without it.

If enabled, all SDK-related logs are automatically sent to Datadog.
You don’t need to call any manual log functions — everything is handled internally by the SDK.

Initialization

To enable Datadog, initialize the service at app startup (e.g., in main.dart):

import 'package:daakia_vc_flutter_sdk/service/daakia_vc_datadog_service.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await DaakiaVcDatadogService.initialize(
    clientToken: "<YOUR_DATADOG_CLIENT_TOKEN>",
    env: "<YOUR_ENV>",
    serviceName: "<YOUR_SERVICE_NAME>",
    applicationId: "<YOUR_DATADOG_APPLICATION_ID>",
    version: "<YOUR_APP_VERSION>",
  );

  runApp(const MyApp());
}

👉 You can obtain the required Datadog credentials in the same way as the meetingId and secretKey — by reaching out to our team.

Screen Share

Android

Screen sharing is supported on Android 10+. The SDK uses a media projection foreground service for this functionality.

Required permissions (automatically merged from SDK's manifest):

  • FOREGROUND_SERVICE
  • FOREGROUND_SERVICE_MEDIA_PROJECTION (required for screen capture)
  • POST_NOTIFICATIONS (for Android 13+)

⚠️ v4.4.1 Update: For Android versions < 14, update your app's AndroidManifest.xml to declare the service with mediaProjection type only:

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
  <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
  <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION" />
  <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
  
  <application>
    ...
    <service
        android:name="de.julianassmann.flutter_background.IsolateHolderService"
        android:enabled="true"
        android:exported="false"
        android:foregroundServiceType="mediaProjection" />
  </application>
</manifest>

Note: In v4.4.1, the foregroundServiceType was changed from "mediaProjection|microphone|camera" to only "mediaProjection" to fix Android 16 compatibility issues. Remove FOREGROUND_SERVICE_CAMERA and FOREGROUND_SERVICE_MICROPHONE permissions if they were previously declared.

iOS

On iOS, screen sharing requires a broadcast extension to capture content from other apps. Refer to the iOS setup guide for detailed instructions.

Support

For support, email contact@daakia.co.in.

About

Client sdk for video conference / video meeting / video calls in flutter

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors