flutter_twilio_commkit_ios
iOS implementation of flutter_twilio_commkit.
Built with Swift using the official Twilio Video and Twilio Voice iOS SDKs, with full CallKit and PushKit integration.
Usage
This package is automatically included when you depend on flutter_twilio_commkit — you do not need to add it manually.
dependencies:
flutter_twilio_commkit: ^0.1.2
Requirements
- iOS 14.0+
- Swift 5.9+
- Xcode 15+
Native dependencies (CocoaPods)
| Library | Version |
|---|---|
| TwilioVideo | ~> 5.8 |
| TwilioVoice | ~> 6.10 |
| TwilioConversationsClient | ~> 2.7 |
Required host-app setup
1. ios/Podfile
platform :ios, '14.0'
2. ios/Runner/Info.plist
Add the following keys:
<!-- Microphone permission -->
<key>NSMicrophoneUsageDescription</key>
<string>Microphone access is required for voice and video calls.</string>
<!-- Camera permission -->
<key>NSCameraUsageDescription</key>
<string>Camera access is required for video calls.</string>
<!-- Background modes -->
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
<string>voip</string>
<string>remote-notification</string>
</array>
3. Capabilities in Xcode
Enable the following capabilities for the Runner target:
- Background Modes → Voice over IP, Audio, Remote notifications
- Push Notifications
4. AppDelegate setup
import flutter_twilio_commkit_ios
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data
) {
FlutterTwilioCommKitIosPlugin.shared?.didRegisterForRemoteNotifications(deviceToken: deviceToken)
super.application(application, didRegisterForRemoteNotificationsWithDeviceToken: deviceToken)
}
override func application(
_ application: UIApplication,
didReceiveRemoteNotification userInfo: [AnyHashable: Any],
fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void
) {
FlutterTwilioCommKitIosPlugin.shared?.didReceiveRemoteNotification(userInfo: userInfo)
completionHandler(.newData)
}
}
Architecture
FlutterTwilioCommKitIosPlugin— plugin entry point, method/event channel routing, CallKit delegateTwilioVoiceManager— voice call lifecycle, PushKit/APNs, CallKit, AVAudioSessionTwilioVideoManager— video room management, track handlingTwilioConversationManager— Twilio Conversations (Chat) integrationTwilioEventSink— buffered event delivery to Flutter
License
MIT — see LICENSE
Libraries
- flutter_twilio_commkit_ios
- iOS implementation of flutter_twilio_commkit.