clevertap_signedcall_flutter 0.0.7 clevertap_signedcall_flutter: ^0.0.7 copied to clipboard
The CleverTap's Signed Call Flutter provides an in-app calls service to make and receive calls in the mobile apps.
CHANGE LOG #
Version 0.0.7 (November 21, 2024) #
What's new
-
[Android Platform]
- Supports Signed Call Android SDK v0.0.7.4 which is compatible with CleverTap Android SDK v6.2.1.
- CallStyle Notifications on Android 12 and Onwards:
- Replaced regular call notifications with the CallStyle notifications for incoming, outgoing and ongoing calls. This update adheres to the new standards for non-dismissible notifications as outlined in the Android 14 behavior changes. These notifications are given top priority in the notification shade or tray.
- Call Quality Control Enhancements: Introduced network quality checks at both the initiator and receiver ends to ensure optimal call quality.
- At the Initiator Side, the SDK checks network latency before processing a call request. If the network latency exceeds the benchmark, set by the SDK, the SDK returns an error with the code 5004 within the signedCallInitHandler.
- At the Receiver Side, the SDK evaluates network quality before showing the incoming call screen. The network quality score (ranging from -1 to 100) is provided via the
onNetworkQualityResponse(int score)
callback, allowing the app to decide whether to proceed with or decline the call. Refer to the SDK documentation for detailed usage.
- Support new parameters in the
initProperties
object which gets passed to theCleverTapSignedCallFlutter.shared.init()
method:fcmProcessingMode
andfcmProcessingNotification
: SDK supports the two modes for processing FCM calls:FCMProcessingMode.foreground
andFCMProcessingMode.background
. These modes determine how the SDK handles incoming calls whether in background or in a foreground service depending on whether the app is actively running or is running in the background. TheFCMProcessingMode.background
is default mode. If choosing theFCMProcessingMode.foreground
, thefcmProcessingNotification
parameter is mandatory. Refer to the SDK documentation for more details on overriding the default mode.callScreenOnSignalling
: ABoolean
property to control when the outgoing call screen appears relative to the signaling process. By default, the SDK immediately displays the outgoing call screen upon a call request and performs the validations in background. Please refer to SDK documentation for detailed usage.
- Support new call events in the CleverTapSignedCallFlutter.shared.callEventListener handler:
CallEvent.appInitiatedCallDeclinedDueToNetworkQuality
: Allows to determine the cases where app initiates the call-decline based on the network quality score provided withinonNetworkQualityResponse(int score)
callback.
-
[iOS Platform]
- Supports Signed Call iOS SDK v0.0.9 which is compatible with CleverTap iOS SDK v7.0.2 and higher.
-
[Android and iOS Platform]
-
Remote Context Configuration for Call Screens:
- Added support for setting a remoteContext parameter within
callOptions
object during call initiation, allowing to pass custom context for receiver's call screens.
- Added support for setting a remoteContext parameter within
Bug Fixes
- [iOS Platform]
- Resolved sa_family_t declaration issue to ensure compatibility with Xcode 16.
- Resolves
EXC_BAD_ACCESS
error that occurred when clicking the mute button on the CallKit screen. This exception was only observed in debugging mode. - Fixes synchronization issues regarding the Mute and Speaker controllers between the CallKit and native screens.
Behaviour Changes
- [Android Platform]
- Optimized screen launch delay when initiating a call. The SDK now launches the outgoing call screen immediately, without waiting for signaling confirmation. A countdown ProgressBar is displayed around the cancel button until signaling is completed. You can use the
cancelCountdownColor
parameter within theoverrideDefaultBranding
initProperty to customize the countdown ProgressBar's color. The default color is yellow (#F5FA55). Please refer to SDK documentation for the details on usage.
- Optimized screen launch delay when initiating a call. The SDK now launches the outgoing call screen immediately, without waiting for signaling confirmation. A countdown ProgressBar is displayed around the cancel button until signaling is completed. You can use the
Enhancements
- [Android Platform]
- Optimized delay in the heads-up behavior of the call notification when the user exits from the call screen.
- Added fallback to the regular notification template for call notifications when using the CallStyle template, in case the full-screen intent permission is not granted.
- Prevented the call notification popup when the SDK requests microphone permissions after the call is accepted.
Version 0.0.6 (July 18, 2024) #
What's new
- [Android Platform]
- Supports Signed Call Android SDK v0.0.5.7 which is compatible with CleverTap Android SDK v6.2.1.
- Enables back button functionality across call screens (incoming, outgoing, and ongoing) to allow users to navigate to other parts of the application while staying on a call.
- Call Delivery Confirmation:
- SDK displays the call delivery confirmation at the initiator by changing the Calling... state to the Ringing... state when the phone starts ringing at the receiver's end.
- New Public API:
CleverTapSignedCallFlutter.shared.getBackToCall()
: Allows to navigate the user to the active call.CleverTapSignedCallFlutter.shared.getCallState()
: Allows to retrieve the current call state.
- Support new parameters in the
initProperties
object which gets passed to theCleverTapSignedCallFlutter.shared.init()
method:notificationPermissionRequired
: ABoolean
property to make notification permission as optional during the Signed Call initialization on Android 13 and onwards.swipeOffBehaviourInForegroundService
: An enum constant ofSCSwipeOffBehaviour
type to define the swipe off behavior for an active call within the foreground service managed by host application. Please ensure to check the SDK documentation for detailed information on usage of initProperties listed above.
- Support new call events in the CleverTapSignedCallFlutter.shared.callEventListener handler:
CallEvent.ringing
: Allows to determine that the call starts ringing on the receiver's device. This event is reported when the SDK successfully establishes communication with the receiver and the phone rings.CallEvent.cancelledDueToRingTimeout
: Allows to handle the SDK-initiated cancellations due to ring-timeout. This event is reported when the SDK fails to establish communication with the receiver, often due to an offline device or a device with low bandwidth.CallEvent.declinedDueToMicrophonePermissionBlocked
: Allows to determine the SDK-initiated decline cases when the microphone permission is blocked at the receiver's end.CallEvent.failedDueToInternalError
: Allows to determine the call failure cases. Possible reasons could include low internet connectivity, low RAM available on device, SDK fails to set up the voice channel within the time limit, etc. Considering the nature of the failure, in most cases, retrying the calls will succeed.- The
CallEvent.declinedDueToBusyOnVoIP
andCallEvent.declinedDueToBusyOnPSTN
, to differentiate calls declined due to another Signed Call(VoIP) or declined due to a PSTN call respectively.
- Support new parameters in the payload object received in the CleverTapSignedCallFlutter.shared.callEventListener handler:
callDetails.callId
: It's a call-specific unique identifier.callDetails.channel
: It provides the name of the signaling channel which was used during the Signed Call. It could be either Socket or FCM.
Bug Fixes
- [Android Platform]
- Resolves an intermittent issue where the dialing tone at the initiator's side of the call plays on the loudspeaker instead of the internal speaker.
- Resolves NPE crash occurring when calls are simultaneously initiated to each other, which disrupts the order of signals exchanged between participants.
Enhancements
- [Android Platform]
- Added safeguard handling to prevent duplication in the system events which SDK records and external callback reporting.
Behaviour Changes
- [Android Platform]
- Adds heads up behaviour to the call-notifications to prompt the user every time the call-screen goes invisible, triggered by either a back button press or putting the app in the background. The heads up notifications allow users to return to the call interface by tapping on the notification.
- Improved Bluetooth audio experience during calls. Dial tone of an outgoing call will now play through the connected Bluetooth headset instead of the internal speaker. Note: The SDK requires the runtime BLUETOOTH_CONNECT permission for Android 12 and onwards to enable the Bluetooth management during calls.
Version 0.0.5 (May 16, 2024 ) #
Added
- [iOS Platform]
- Supports Signed Call iOS SDK v0.0.7 which is compatible with CleverTap iOS SDK v6.1.0 and higher.
- Supports Socket.io v16.1.0 and Starscream v4.0.8 dependency.
- Adds privacy manifest.
- Expose socket usage logging for debugging purpose.
Bug Fixes
- [iOS Platform]
- Handles runtime exception caused by an incompatible deployment target assigned to the Starscream framework by the host application. The Signed Call iOS dependency uses the Starscream framework as a transitive dependency. The issue is now handled within the SDK.
Version 0.0.4 (January 22, 2024 ) #
What's new
-
[Android Platform]
- Supports Signed Call Android SDK v0.0.5 which is compatible with CleverTap Android SDK v5.2.2.
- Introduces new properties
initiatorImage
andreceiverImage
in theMissedCallActionClickResult
instance provided through theCleverTapSignedCallFlutter.shared.missedCallActionClickListener.listen(MissedCallActionClickResult)
event-stream. - Adds new public API registerVoIPCallStatusListener(SCVoIPCallStatusListener callStatusListener) to observe the changes in the call state, providing updates to both the initiator and receiver of the call.
- Adds new callback APIs to handle events when the app is terminated or killed, as listed below:
- Use
CleverTapSignedCallFlutter.shared.onBackgroundCallEvent(handler)
to handle VoIP call events when the app is in a killed state. - Use
CleverTapSignedCallFlutter.shared.onBackgroundMissedCallActionClicked(handler)
to manage missed call action click events when the app is in a killed state. Please refer to the integration documentation for more details on handling callback events in a killed state.
- Use
-
[iOS Platform]
- Supports Signed Call iOS SDK v0.0.6 which is compatible with CleverTap iOS SDK v5.2.2.
Breaking Changes
-
[Android and iOS Platform]
- The
CleverTapSignedCallFlutter.shared.callEventListener
event stream will now provide an instance of theCallEventResult
class instead of theCallEvent
class. Please refer to the integration documentation for details on usage.
- The
-
[iOS Platform]
- iOS deployment target version is bumped to iOS 12.
Behaviour Changes
-
[Android Platform]
- Handles UX issues during network loss or switch by invalidating the socket reconnection and establishing an active connection to process the call related actions.
- Modifies the SDK's behavior when the Notifications Settings are disabled for the application. Previously, if the app's notifications were disabled, the device rang on incoming calls without displaying the call screen in the background and killed states. In this version, the SDK now declines incoming calls when the notifications are disabled. If the notification settings are later enabled, the SDK resumes processing calls instead of automatically declining them.
-
[Android and iOS Platform]
- The
CleverTapSignedCallFlutter.shared.callEventListener
will now provide updates in the call state to both the initiator and receiver of the call. Previously, it was exposed only to the initiator of the call.
- The
Bug Fixes
-
[Android Platform]
- Fixes multiple outgoing call requests initiated simultaneously through multiple calls of
CleverTapSignedCallFlutter.shared.call(..)
. The SDK now processes only one call at a time while rejecting other requests with a failure exception. - Addresses an IllegalStateException which occurs while prompting the user with the poor/bad network conditions on the call-screen.
- Fixes multiple outgoing call requests initiated simultaneously through multiple calls of
-
[Android and iOS Platform]
- Addresses an infinite Connecting state issue on the call screen which was triggered by using CUIDs longer than 15 characters. In this version, the SDK extends support to CUIDs ranging from 5 to 50 characters.
Version 0.0.3 (September 11, 2023) #
What's new
-
[Android Platform]
- Supports Signed Call Android SDK v0.0.4 which is compatible with CleverTap Android SDK v5.2.0.
-
[iOS Platform]
- Supports Signed Call iOS SDK v0.0.5 which is compatible with CleverTap iOS SDK v5.2.0.
-
[Android and iOS Platform]
- Adds support for hiding the Powered by Signed Call label from VoIP call screens. For more information, refer to Override Dashboard Branding for Call Screen In Android and Override Dashboard Branding for Call Screen In iOS.
Changes
-
[Android Platform]
-
The index.html file used inside the SDK has been renamed to a unique name to prevent conflicts with the same file name that may exist in the application.
-
Adjust the Microphone permission prompt limit to align with the permissible threshold which is shown when the receiver attends the call. Previously, if the Microphone permission was denied even once, SDK would continue to block all incoming calls at the receiver's end.
Note: Starting from Android 11, users have the option to deny the prompt twice before the permission is blocked by system, whereas in earlier versions, users could deny the prompt until selecting the "don't ask again" checkbox.
-
-
[Android and iOS Platform]
- Captures a missed call system event when a call initiator manually cancels the call, reported under the
SCEnd
system event.
- Captures a missed call system event when a call initiator manually cancels the call, reported under the
Fixes
- [Android Platform]
- Improved Bluetooth handling for a better user experience:
- Voice now goes through Bluetooth when Bluetooth connectivity is established during an ongoing call.
- Voice now goes through the internal speaker when Bluetooth connectivity is disabled from the call screen button.
- Resolved duplicate reporting of
SCIncoming
system events caused by receiving duplicate pushes for the same call, one from the socket and one from FCM.
- Improved Bluetooth handling for a better user experience:
Version 0.0.2 (February 21, 2022) #
- Supports Signed Call Android SDK v0.0.2 and Signed Call iOS SDK v0.0.2.
- Adds Push Primer support for the Android 13 notification runtime permission.
- Adds new public API
disconnectSignallingSocket()
in order to close the Signalling socket connection. - Fixes VoIP call screen distortion in iOS.
Version 0.0.1 (December 20, 2022) #
- Initial Release.
- Supports Signed Call Android SDK v0.0.1 and Signed Call iOS SDK v0.0.1.