TUICallKit for Flutter
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 callCallMediaType.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
- Official Documentation: Tencent Cloud Audio/Video Calls
- Technical Support: Contact Tencent Cloud customer service
- Issue Reports: GitHub Issues