TUICallKit for Flutter

pub package platform

TUICallKit is a UIKit for audio and video calls launched by Tencent Cloud. It provides a complete audio and video calling solution, supporting one-to-one and group calls with a complete UI interface and call logic.

Features

  • 🎯 One-to-One Calls: Support for audio and video one-to-one calls
  • 👥 Group Calls: Support for multi-party audio and video calls
  • 🎨 Complete UI: Provides complete call interface, ready to use out of the box
  • 🔔 Incoming Call Alerts: Support for ringtones, banner notifications, etc.
  • 🎛️ Call Controls: Mute, speaker, camera switching and other functions
  • 🪟 Floating Window: Support for mini-window mode without affecting other app usage
  • 🌍 Internationalization: Multi-language support

Requirements

  • Flutter SDK: >=3.3.0
  • Dart SDK: >=3.4.0 <4.0.0
  • Android: minSdkVersion 21
  • iOS: 12.0+

Installation

Run this command in your Flutter project:

flutter pub add tencent_calls_uikit

Quick Start

1. Initialization

Add NavigatorObserver when starting your app:

import 'package:tencent_calls_uikit/tencent_calls_uikit.dart';

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      navigatorObservers: [TUICallKit.navigatorObserver],
      home: YourHomePage(),
    );
  }
}

2. Login

// Login to TUICallKit
final result = await TUICallKit.instance.login(
  sdkAppId,     // Your SDKAppID
  userId,       // User ID
  userSig,      // User signature
);

if (result.code == 0) {
  print('Login successful');
} else {
  print('Login failed: ${result.message}');
}

3. Set User Information

await TUICallKit.instance.setSelfInfo(
  'nickname',   // User nickname
  'avatar_url', // User avatar URL
);

4. Make a Call

// Make an audio call
await TUICallKit.instance.calls(
  ['user1', 'user2'], // List of called users
  CallMediaType.audio, // Call type: audio
);

// Make a video call
await TUICallKit.instance.calls(
  ['user1'], // List of called users
  CallMediaType.video, // Call type: video
);

Advanced Features

Set Ringtone

await TUICallKit.instance.setCallingBell('assets/audios/phone_ringing.mp3');

Enable Mute Mode

await TUICallKit.instance.enableMuteMode(true);

Enable Floating Window

await TUICallKit.instance.enableFloatWindow(true);

Enable Virtual Background

await TUICallKit.instance.enableVirtualBackground(true);

Enable Incoming Banner

TUICallKit.instance.enableIncomingBanner(true);

Enable AI Transcriber

TUICallKit.instance.enableAITranscriber(true)

Permission Configuration

Android

Add necessary permissions in android/app/src/main/AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

iOS

Add permission descriptions in ios/Runner/Info.plist:

<key>NSCameraUsageDescription</key>
<string>Camera access is required for video calls</string>
<key>NSMicrophoneUsageDescription</key>
<string>Microphone access is required for voice calls</string>

Example

Check out the complete example project in the example directory to learn how to integrate and use TUICallKit.

cd example
flutter run

API Documentation

TUICallKit Main Methods

Method Description
login(sdkAppId, userId, userSig) Login to TUICallKit
logout() Logout from TUICallKit
setSelfInfo(nickname, avatar) Set user information
calls(userIdList, callMediaType, params) Make a call
join(callId) Join a call
setCallingBell(assetName) Set ringtone
enableMuteMode(enable) Enable mute mode
enableFloatWindow(enable) Enable floating window
enableVirtualBackground(enable) Enable virtual background
enableIncomingBanner(enable) Enable incoming call banner

CallMediaType Enum

  • CallMediaType.audio - Audio call
  • CallMediaType.video - Video call

FAQ

Q: How to get SDKAppID and UserSig?

A: Please refer to the Tencent Cloud official documentation: Quick Integration

Q: No sound during calls?

A: Please check device permission settings and ensure the app has microphone and speaker permissions.

Q: App crashes during iOS device debugging?

A: Please ensure camera and microphone permission descriptions are properly configured in Info.plist.

Changelog

See CHANGELOG.md for version update details.

License

This project is open source under the MIT License.

Support