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 totrue
, 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