Skip to content

feat: native web & macOS call holding - #322

Open
cybex-dev wants to merge 2 commits into
masterfrom
feat_web_local_holding
Open

feat: native web & macOS call holding#322
cybex-dev wants to merge 2 commits into
masterfrom
feat_web_local_holding

Conversation

@cybex-dev

Copy link
Copy Markdown
Owner

Description

This pull request consolidates various bug fixes and platform enhancements across Android, iOS, and Web. A key change involves the removal of the client-side configurable call holding feature for Web and macOS. This feature, previously implemented using HoldStrategy and the AudioProcessor API, is now marked as "not currently implemented" within the plugin. Related APIs such as holdAudioUrl and onHoldAction have also been removed from the platform interface.

Specific improvements include:

  • Android:

    • Enhances permission request handling, ensuring callbacks complete correctly for re-requests and cancellations.
    • Adds the FOREGROUND_SERVICE_PHONE_CALL permission and type to the call foreground service, improving compliance and background operation on Android 14+.
    • Implements reactivity to microphone permission changes, allowing the foreground service to update its types dynamically if mic access is granted mid-call.
    • Refines TVConnectionService to prevent premature termination of the foreground service when one call ends but others remain active.
    • Supports null From/To parameters in raw connect() calls, providing flexibility for TwiML-driven routing.
    • Introduces improved FCM token rotation handling, ensuring the Twilio Voice plugin is notified of new tokens and re-registers them, preventing silent failures for incoming calls.
  • iOS:

    • Aligns CallKit mute and hold states with Twilio SDK actions, ensuring UI consistency.
    • Adds robust parameter validation for makeCall to prevent malformed requests.
    • Resolves issues causing hanging Future objects when placing calls that encounter errors or device unregistration.
    • Integrates DefaultAudioDevice for consistent audio routing and control with the Twilio SDK.
    • Includes logging for incoming push notifications not directly handled by the Twilio SDK.
    • Corrects system version parsing in the pushRegistry delegate.
    • Ensures CallKit is notified of failures when starting or answering calls.
    • Provides hex-formatted device tokens to Dart and adds a new event for device push token updates.
  • Web:

    • Applies code cleanup and refactoring for improved stability and robustness of call and device functions.
    • Ensures custom parameters are correctly resolved when an incoming call is answered.

This release streamlines the plugin's architecture, improves reliability across platforms, and sets the stage for a re-evaluated, potentially server-side, approach to call holding for Web and macOS.

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

Screenshots (if appropriate):

@cybex-dev cybex-dev self-assigned this Jul 22, 2026
@cybex-dev cybex-dev added enhancement New feature or request macOS web labels Jul 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request macOS web

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant