Added Region Selection support as a parameter on the Config class. This allows users to specify the region for their WebSocket connection, enhancing performance and reliability based on geographical location. It will default to 'auto' if not specified, which will automatically select the best region based on the user's location. There is also a fallbackOnRegionFailure parameter that defaults to true, which will automatically fallback to the 'auto' region if the specified region fails to connect if set to true.
Added a 10 second answer timeout for accepted push notifications. This ensures that if a user accepts a push notification but does not receive an invite on the socket once connected within 10 seconds, the call will be automatically ended with an ORIGINATOR_CANCELLED termination reason. This prevents situations where a user accepts a call but does not receive the invite due to network issues or other delays potentially causing infinite loading states in implementations.
Fixed an issue where the Termination Cause was always 'USER_BUSY' regardless of current call state. Now, when terminating an active call, the state will be 'NORMAL_CLEARING' and when rejecting an invite, the Termination Cause will be 'USER_BUSY'.
Fixed an issue where, on the Android and iOS clients, we weren't checking if the socket was open before sending messages. This could lead to 'StreamSink is closed' errors in niche edge cases.
Clear Push Metadata in more places to prevent issue where a call is attempting to be attached based on previously stored push metadata. You can also now manually clear the push metadata by calling clearPushMetadata method on the TelnyxViewModel class.
Bump negotiation timeout to from 300ms to 500ms (per ice candidate)
Added method to disable push notifications on the SDK via disablePushNotifications method.
Added a new parameter to the login configuration that allows users to provide their own CustomLogger to the SDK. This is useful for users that want to log the SDK's output in their own way or redirect logs to a server.
Added a new CallStates 'dropped' and 'reconnecting' to the CallState enum. This will allow users to know when a call has been dropped or is in the process of reconnecting. There will be a NetworkReason provided for both of these states to give more context on why the call was dropped or is reconnecting.
Fixed an issue where the call states were not being updated correctly, identifying a call as active when it was still connecting (ICE Gathering). This caused a scenario where users thought a call was active but couldn't hear anything.
Call ID no longer required when ending call or using DTMF. As these methods belong to a call
object, the call ID is inferred from the call object itself. This means users only need to keep
track of the call objects that are in use and call the relevant methods on the call object itself.