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

How to use

Installation

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

  dependencies:
    daakia_vc_flutter_sdk: ^3.1.2

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">
  <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" />
  <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" />
  <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" />
  <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>

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,
                            )),
                  );

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.

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.

Screen Share

Android

On Android, you will have to use a media projection foreground service.

In the app's AndroidManifest.xml file, declare the service with the appropriate types and permissions as following:

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
  <!-- Required permissions for screen share -->
  <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_CAMERA"/>
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE"/>
    <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|microphone|camera" />
  </application>
</manifest>

iOS

On iOS, a broadcast extension is needed in order to capture screen content from other apps. See For iOS-specific setup, refer to the setup guide for instructions.

Support

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

Libraries

api/api_client
api/injection
daakia_vc_flutter_sdk
events/meeting_end_events
events/rtc_events
model/action_model
model/base_list_response
model/base_response
model/emoji_message
model/event_password_protected_data
model/feature_data
model/features
model/host_token_model
model/language_model
model/licence_verify_model
model/meeting_details
model/meeting_details_model
model/private_chat_model
model/remote_activity_data
model/rtc_data
model/saved_data
model/send_message_model
model/transcription_action_model
model/transcription_model
model/translate_base_model
model/translation_data
model/upload_data
model/white_board_data
presentation/bottom_sheets/end_meeting_bottomsheet
presentation/bottom_sheets/more_option_bottomsheet
presentation/dialog/emoji_dialog
presentation/dialog/language_select_dialog
presentation/dialog/pariticipant_dialog_controls
presentation/pages/all_participant_page
presentation/pages/chat_controller
presentation/pages/chat_page
presentation/pages/private_chat_page
presentation/pages/transcription_screen
presentation/pages/webinar_controls
presentation/screens/license_expired
presentation/screens/loading_screen
presentation/screens/prejoin_screen
presentation/screens/web_preview
presentation/widgets/compact_file_preview
presentation/widgets/emoji_reaction_widget
presentation/widgets/file_preview
presentation/widgets/initials_circle
presentation/widgets/loader
presentation/widgets/message_bubble
presentation/widgets/participant_tile
presentation/widgets/reaction_bubble
presentation/widgets/transcription_bubble
resources/colors/color
resources/json/language_json
rtc/lobby_request_manager
rtc/meeting_manager
rtc/method_channels/reply_kit
rtc/participant_sorter
rtc/room
rtc/widgets/no_video
rtc/widgets/participant
rtc/widgets/participant_info
rtc/widgets/participant_stats
rtc/widgets/pip_screen
rtc/widgets/rtc_controls
rtc/widgets/text_field
rtc/widgets/white_board_widget
utils/constants
utils/meeting_actions
utils/rtc_ext
utils/storage_helper
utils/utils
viewmodel/rtc_provider
viewmodel/rtc_viewmodel