Enable browser-based video calling and voice communication in your web application with this WebRTC SDK integration guide. MirrorFly's customizable white-label solution delivers pre-built WebRTC functionality with straightforward client-side implementation and extensive configuration options. This readme details required libraries, dependency management, supplementary capabilities, and step-by-step setup instructions.
MirrorFly helps build omni-channel communication apps for any kind of business
- In-app Messaging - Connect users individually or as groups via instant messaging features.
- HD Video Calling - Engage users over face-to-face conversations anytime, and from anywhere.
- HQ Voice Calling - Deliver crystal clear audio calling experiences with latency as low as 3ms.
- AI Voice Agent - Build custom AI voicebots that can understand, act and respond to user questions.
- AI Chatbot - Deploy white-label AI chatbots that drive autonomous conversations across any web or mobile app.
- Live Streaming - Broadcast video content to millions of viewers around the world, within your own enterprise app.
The requirements for the Audio & Video Chat SDK for Android are:
- Android: Lollipop 5.0 (API Level 21) or higher
- Java: Version 7 or higher
- Gradle: 8.6.0 or higher
- Kotlin: 2.0.20 or higher
- targetSdkVersion / compileSdkVersion: 35 or above
Step 1: Register here to get a MirrorFly User account.
Step 2: Login to your Account
Step 3: Get the License key from the application Info’ section
Step 1: Create a new project or open an existing project in Android Studio.
Step 2:
- For Gradle 6.8 or higher, add the following code to your settings.gradle file.
- For Gradle 6.7 or lower, add the code to your root build.gradle file.
dependencyResolutionManagement {
repositories {
jcenter()
maven {
url "https://repo.mirrorfly.com/release"
}
}
}Step 3: Add the following dependencies in the app/build.gradle file.
dependencies {
implementation 'com.mirrorfly.sdk:mirrorflysdk:7.13.31'
}Step 4: Add the below line in the gradle.properties file, to avoid imported library conflicts.
android.enableJetifier=trueStep 5: Add required runtime permissions for calls click here
ChatManager.initializeSDK("LICENSE_KEY", (isSuccess, throwable, data) -> {
if (isSuccess) {
Log.d("TAG", "initializeSDK success ");
} else {
Log.d("TAG", "initializeSDK failed with reason " + data.get("message"));
}
});<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.uikitapplication">
<application
android:name=".MyApplication"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>FlyCore.registerUser(USER_IDENTIFIER, (isSuccess, throwable, data) -> {
if (isSuccess) {
Boolean isNewUser = (Boolean) data.get("is_new_user");
String userJid = (String) data.get("userJid");
JSONObject responseObject = (JSONObject) data.get("data");
String username = responseObject.getString("username");
}
});After successful registration, the Chat SDK automatically attempts to connect to the chat server.
ChatManager.setConnectionListener(new ChatConnectionListener() {
@Override
public void onConnected() {}
@Override
public void onDisconnected() {}
@Override
public void onConnectionFailed(@NonNull FlyException e) {}
@Override
public void onReconnecting() {}
});@Override
public void onCreate() {
super.onCreate();
CallManager.setCallActivityClass(CALL_UI_ACTIVITY.class);
CallManager.setMissedCallListener((isOneToOneCall, userJid, groupId, callType, userList, callMetaDataArray) -> {
// show missed call notification
});
CallManager.setCallHelper(new CallHelper() {
@NonNull
@Override
public String getNotificationContent(@NonNull String callDirection, CallMetaData[] callMetaDataArray) {
return CallNotificationHelper.getNotificationMessage();
}
});
CallManager.setCallNameHelper(new CallNameHelper() {
@NonNull
@Override
public String getDisplayName(@NonNull String jid, CallMetaData[] callMetaDataArray) {
return ContactManager.getDisplayName(jid);
}
});
}<activity
android:name="YOUR_CALL_ACTIVITY"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
android:excludeFromRecents="true"
android:launchMode="singleTask"
android:resizeableActivity="false"
android:screenOrientation="portrait"
android:supportsPictureInPicture="true"
android:showOnLockScreen="true"
android:turnScreenOn="true"
android:taskAffinity="call.video"
tools:targetApi="o_mr1" />CallManager.configureCallActivity(ACTIVITY);
CallManager.bindCallService();
CallManager.unbindCallService();FlyUtils.getJid(USER_NAME);CallManager.makeVoiceCall("TO_JID", CALL_METADATA, (isSuccess, flyException) -> {
if (isSuccess) {
Log.d("MakeCall", "call success");
}
});CallManager.answerCall((isSuccess, flyException) -> {
if (isSuccess) {
Log.d("AnswerCall", "call answered success");
}
});CallManager.declineCall();CallManager.disconnectCall();- Self-hosted – Deploy your client on your own data centers, private cloud or third-party servers.
- Cloud – Host your client on MirrorFly’s multi-tenant cloud servers.
Learn more: https://www.mirrorfly.com
- Developer Documentation
- Product Tutorials
- MirrorFly Flutter Solution
- Dart Documentation
- Pub.dev Documentation
- NPM Documentation
Need a tech team to build your enterprise app? Hire a full team of experts. From concept to launch, we handle every step of the development process.
Our experts are available 24/7 to help you.
Visit our careers page: https://www.mirrorfly.com/careers
