callbundle_ios 1.0.9 copy "callbundle_ios: ^1.0.9" to clipboard
callbundle_ios: ^1.0.9 copied to clipboard

iOS implementation of the CallBundle plugin using CallKit. Handles PushKit, audio session, and missed call notifications inside the plugin.

callbundle_ios #

pub package

The iOS implementation of callbundle.


Usage #

This package is endorsed — simply add callbundle to your pubspec.yaml and this package is included automatically on iOS.

dependencies:
  callbundle: ^1.0.0

Architecture #

Component File Responsibility
CallBundlePlugin CallbundleIosPlugin.swift MethodChannel handler, singleton access, event dispatch
CallKitController CallKitController.swift CXProvider + CXCallController for native call UI
PushKitHandler PushKitHandler.swift PKPushRegistry delegate, VoIP token management
AudioSessionManager AudioSessionManager.swift AVAudioSession with .mixWithOthers
CallStore CallStore.swift Thread-safe call tracking + cold-start persistence
MissedCallNotificationManager MissedCallNotificationManager.swift UNUserNotificationCenter for missed calls

Key Features #

PushKit In-Plugin #

PushKit VoIP push is handled inside the plugin. No AppDelegate code needed.

When a VoIP push arrives:

  1. PushKitHandler receives the payload via PKPushRegistryDelegate
  2. reportNewIncomingCall is called synchronously (required by iOS — app is terminated if not)
  3. CallKit3. CallKit native incoming call screen3. CallKit3. Ca → event delivered to Dart via MethodChannel

Required Info.plist entry:

<key>UIBackgroundModes</key>
<array>
    <string>voip</string>
</array>

CallKit Integration #

Full CXProvider delegate with:

  • Incoming call reporting (reportNewIncomingCall)
  • Outgoing call initiation (CXStartCallAction)
  • Call connected/ended state management
  • isUserInitiated on every event (no _isEndingCallKitProgrammatically flag)

Audio Session Management #

AudioSessionManager configures AVAudioSession with .mixWithOthers:

  • Prevents conflict with HMS/100ms audio sessions
  • Activates on call connect, deactivates on call end
  • Configures .playAndRecord category with .defaultToSpeaker option

Cold-Start Persistence #

CallStore CallStore CallStore baCallStore CallStore CallStore baCallStore CallStore CallSsyCallStore CallStore CallStore baCallStore CallStore CallStore baCallStore CallStore configure()viadeliverPendingEvents()`

Thread Safety #

All CallStore operations use a serial DispatchQueue:

private let queue = DispatchQueue(label: "com.callbundle.callstore", qos: .userInitiated)

Permission Checking #

  • checkPermissions: Reads UNNotificationCenter.getNotificationSettings() without requesting
  • requestPermissions: Calls UNUserNotificationCenter.requestAuthorization- **requestPermissions**: Calls UNUserNotificationCenter.requestAu Purpose
    CallKit Native incoming/outgoing call UI
    PushKit VoIP push notification delivery
    AVFoundation Audio session management
    UserNotifications Missed call notifications

Requirements #

Requirement Value
iOS 13.0+
Swift 5.0+
CocoaPods 1.10+

0
likes
0
points
260
downloads

Publisher

verified publisherikolvi.com

Weekly Downloads

iOS implementation of the CallBundle plugin using CallKit. Handles PushKit, audio session, and missed call notifications inside the plugin.

Homepage
Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

callbundle_platform_interface, flutter

More

Packages that depend on callbundle_ios

Packages that implement callbundle_ios