stream_video 0.6.0 copy "stream_video: ^0.6.0" to clipboard
stream_video: ^0.6.0 copied to clipboard

The Official Low-level Client for Stream Video, a service for building video calls, audio rooms, and live-streaming applications.

0.6.0 #

This release introduces a major rework of the join/reconnect flow in the Call class to support Reconnect V2, enhancing reconnection handling across various scenarios. Most updates are within the internals of the Call class, though some changes are outward-facing, including a few breaking changes.

πŸ”„ Changed

  • Call.reject() method will now always call Call.leave() method internally.

🚧 Breaking changes

  • Removed the deprecated Call.joinLobby() method.
  • The maxDuration and maxParticipants parameters of Call.getOrCreate() are now combined into the StreamLimitsSettings? limits parameter.

πŸ”„ Dependency updates

  • Updated Firebase dependencies to resolve Xcode 16 build issues.

βœ… Added

  • Added the registerPushDevice optional parameter (default is true) to the StreamVideo.connect() method,allowing the prevention of automatic push token registration.
  • Added participantCount and anonymousParticipantCount to CallState reflecting the current number of participants in the call.
  • Introduced the watch parameter to Call.get() and Call.getOrCreate() methods (default is true). When set to true, this enables the Call to listen for coordinator events and update its state accordingly, even before the call is joined (Call.join()).
  • Added support for targetResolution setting set on the Dashboard to determine the max resolution the video stream.
  • Introduced new API methods to give greater control over incoming video quality. Call.setPreferredIncomingVideoResolution() allows you to manually set a preferred video resolution, while Call.setIncomingVideoEnabled() enables or disables incoming video. For more details, refer to the documentation.

🐞 Fixed

  • Automatic push token registration by StreamVideo now stores registered token in SharedPreferences, performing an API call only when the token changes.
  • Fixed premature ringing termination issues.
  • Resolved issues where ringing would not end when the caller terminates the call in an app-terminated state.
  • Fixed issue with call not ending in some cases when only one participant is left and dropIfAloneInRingingFlow is set to true.

0.5.5 #

🐞 Fixed

  • Migrated from internet_connection_checker to internet_connection_checker_plus due to license issues

0.5.4 #

🐞 Fixed

  • Fixed an issue where active call foreground service was recreated after being stopped when ringing call was declined and in-app incoming screen was displayed.

🚧 Breaking changes

  • The regular push notification handling has been removed from iOS, providing more control over the implementation. VoIP push notifications will continue to be handled as before. For more details, refer to the documentation.

  • Dependency updates

    • Flutter SDK constraint updated to >=3.22.0 (Dart SDK to >=3.4.0 <4.0.0)
    • internet_connection_checker updated from ^1.0.0+1 to ^2.0.0
    • rxdart updated from ^0.27.7 to ^0.28.0
    • web updated from ^0.5.1 to ^1.0.0
    • web_socket_channel updated from ^2.4.0 to ^3.0.1

0.5.3 #

🐞 Fixed

  • Improved video quality for a smoother experience.
  • Resolved an issue where the participant's state showed an empty roles list.
  • Fixed a bug that caused the CallKit ringing notification to continue after a call was accepted.

0.5.2 #

πŸ”„ Changed

  • SortParam changed to SortParamRequest in queryMembers() method inside Call and StreamVideo class

0.5.1 #

βœ… Added

  • Added backstage parameter to call.getOtCreate() method with backstage settings. For more information, refer to the documentation
    • Ability to join call in advance with joinAheadTimeSeconds parameter (part of StreamBackstageSettings)
  • Added startsAt parameter to call.getOtCreate() method
  • Added maxDuration and maxParticipants parameters to call.getOtCreate() method
  • Added video parameter to call.getOtCreate(), call.getCall() and call.join() methods. This parameter is used to distinguish between audio-only and video calls for ringing purposes.
    • ❗Important❗ the video parameter is false by default. If you want your call to be treated as a video call while ringing set it to true.

🐞 Fixed

  • Fixed reaction dismissal: Sent and received reactions are now correctly dismissed after a 5-second timeout (configurable in CallPreferences).
  • Fixed the cancel button behavior in the screen-sharing notification on Android. It will now correctly stop the screen-sharing process.
  • Fixed the issue with the cancel button in the call-in-progress notification was not stopping the call.
  • Fixed the connection quality updates for other call participants.
  • Fixed an issue where declining a ringing call when the app was in a terminated state did not stop the ringing on the caller's end.

0.5.0 #

βœ… Added

  • Picture in Picture (PiP) is now also supported on iOS. For more information, refer to the documentation

🐞 Fixed

  • Fixed an issue where the microphone was being muted when the app was running in the background on Android versions greater than 14.

🚧 Breaking changes

  • The implementation of BroadcastSampleHandler, used for broadcast screen-sharing mode on iOS is now moved from stream_video_flutter package to a separate stream_video_screen_sharing package. Migration steps:
  • Add stream_video_screen_sharing dependency to your pubspec.yaml file
  • Replace the import in SampleHandler.swift file from stream_video_flutter to stream_video_screen_sharing
  • Replace the dependancy added to the extension target in Podfile file from stream_video_flutter to stream_video_screen_sharing

For complete screen-sharing guide please refer to the documentaiton

  • Previously deprecated String type parameters in makeCall() and getCallRingingState() methods are now removed. Use StreamCallType callType parameter now.
  • Previously deprecated events and coordinatorEvents streams are now removed from Call class. Use callEvents instead.

0.4.4 #

βœ… Added

  • Added watch parameter to StreamVideo.queryCalls() method, allowing you to subscribe to queried call events. For more information, refer to the documentation.
  • Introduced listRecordings() to StreamVideo object, enabling you to query call recordings using a provided call CID.

πŸ”„ Changed

  • The default constructor for StreamCallType is now deprecated. Instead, use the StreamCallType.defaultType() factory constuctor.

🐞 Fixed

  • Improved the quality of screen sharing. It now correctly respects the parameters set in ScreenSharingConstraints to adjust the quality.

0.4.3 #

🐞 Fixed

  • Fixed reconnection flow.
  • Fixed compilation errors on web.
  • Fixed screen-sharing not working on some versions of Android.
  • Fixed accepting incoming call during another call (or outgoing call).
  • Fixed CallKit incoming push label and Android accept call button icons for audio-only calls.

βœ… Added

  • Added support for missed calls. Push notifications and CallMissedEvent event will be sent now when the user misses the call.
  • Added support for call transcription check transcription cookbook
    • Added startTranscription(), stopTranscription() and listTranscriptions() methods to Call class.
  • Added option to take a screenshot during the call check screenshot documentation
    • Added takeScreenshot() method to Call class.
  • Added recordingExternalStorage optional param to call.startRecording() method.
  • Added requestScreenSharePermission() method to Call class that ensures correct permissions are given for screen-sharing on Android.

πŸ”„ Changed

  • Changed role member to roles, to reflect the possibility of the user having multiple roles, in CallParticipantState and CallMember.
  • Changed SortParamRequest to SortParam.

πŸ”„ Changed some of the signatures

  • listRecordings() method in PermissionsManager doesn't require sessionId param now.
  • setParticipantPinned() method in Call and CallSession now requires sessionId, userId, and pinned params instead of SetParticipantPinned action.
  • updateViewportVisibility() method in CallSession now requires visibilityChange param instead of UpdateViewportVisibility action.
  • setSubscriptions() and updateSubscription() methods in CallSession now require a list of subscriptionChanges param instead of a list of SetSubscription actions.
  • Added optional reason param to reject() method in Call class.

Removed

  • Removed updateSubscriptions method from Call.

0.4.2 #

βœ… Added

  • Added ClientDetails to SFU's join request.

🐞 Fixed

  • Tweaked SFU events handling to ensure there is no gap in handling them.
  • Fixed camera and microphone toggling on incoming/outgoing screen.
  • Fixed screen sharing not working when camera track was enabled.
  • Fixed issues with video freezing sometimes.

0.4.1 #

🚧 Build breaking changes

  • Bumped connectivity_plus dependency to 6.0.3

Note, that this changes the plugin requirements:

  • compileSDK 34 for Android part
  • Java 17 for Android part
  • Gradle 8.4 for Android part

🐞 Fixed

  • Added foreground service type to service declaration in AndroidManifest

0.4.0 #

🚧 Breaking changes

  • Updated minimum supported dart SDK version to 3.3.0 (which requires min Flutter SDK 3.19.0)

  • Updated flutter_webrtc to 0.10.4

🐞 Fixed

  • Fixed an issue where subscriber offer events might be missed causing missing video/audio tracks for call participants.
  • Fixed speakerphone/earpiece switching on iOS.
  • User is now diconnected immedietaly when leaving the call.

0.3.9 #

  • Reverted flutter_webrtc dependency version back to 0.9.47 to fix the compilation issues for web in Flutter 3.19.

0.3.8 #

🐞 Fixed

  • Fixed application of initial call configuration (via CallConnectOptions) and default settings from Stream Dashboard
  • Default camera facing is now applied from Dashboard settings (was ignored previously)

βœ… Added

  • audioOutputDevice, audioInputDevice and cameraFacingMode added to CallConnectOptions
  • Optional connectOptions parameter added to call.join() method as a preferred way of setting initial call configuration - check out our documentation for more info

0.3.7 #

  • Updated minimum supported SDK version to Flutter 3.16

βœ… Added

  • Added mirrorMode parameter to CameraConstraints, which determines whether the camera for the given track should be mirrored or not. When set as defaultMode the mirroring is set as true, when facingMode is set to user and false when facingMode is set to environment.

🐞 Fixed

  • Fixed an issue that might break screen sharing functionality.
  • Fixed an issue that caused output audio device not being set correctly.
  • Fixed an issue that still caused constant notification sound being triggered during the call on Android.
  • Fixed an issue that blocked volume adjustment during the call on Android.

0.3.6 #

βœ… Added

  • Added callEvents stream to Call that replaces events and coordinatorEvents streams (both are now deprecated).
  • Added callBackgroundBuilder to StreamOutgoingCallContent.

🚧 Breaking changes

  • Removed the callCid parameter requirement from sendCustomEvent method in Call class.

🐞 Fixed

  • Fixed an issue that caused an empty Call participants list in CallState during ringing.
  • Fixed an issue that caused constant notification sound being triggered during the call on Android.
  • Disabled camera mirroring when using back camera and when screensharing.

0.3.5 #

βœ… Added

  • Added keepConnectionsAliveWhenInBackground to StreamVideoOptions to allow keeping websocket connections and event subscribtions open when app is in the background (false by default).
  • Added support for Picture in Picture feature to Android - check out our documentation for more info
  • Added usage statictics reporting

🐞 Fixed

  • Fixed handling of default audio output device setting from Stream dashboard
  • Fixed handling of default camera/microphone state setting from Stream dashboard
  • Fixed an issue where call could sometimes loose participants state

0.3.4 #

  • Sync version with stream_video_flutter 0.3.4

0.3.3 #

  • Added StreamCallType class that replaces depricated String type parameter
  • Exapanded CallStats class with more structured WebRTC statistics as stats field
  • Changed raw statistics in CallStats to be of a Map<Stirng, dynamic> type
  • Added publisherStats, subsciberStats and latencyHistory to the CallState that hold some of the processed statistcs

Bug fixes

  • Fixes incoming call behavior when both CallKit and Stream incoming screen component is used
  • Fixes the issue on Android that caused missed call notification when ringing with reused call id

0.3.2 #

🐞 Fixed

  • Various fixes to call ringing and push notifications.
  • Fixes call ringing cancellation when app is terminated on iOS (requires additional setup - check Step 6 of the APNS integration) in our documentation.
  • Fixes late push notification handling on Android, where already ended call was ringing if the device was offline and the push was delivered with a delay.
  • Fixes call ringing cancellation when caller timed out while calling
  • Fixed action tap callback on Android call notification.
  • Fixes possible crashes for Android SDKs versions <26.
  • Fixed screen sharing on iOS when screen sharing mode was switched between in-app and broadcast.
  • Changed the version range of intl package to >=0.18.1 <=0.19.0 because it was causing isses with other packages.

βœ… Added

  • Added custom field to CallParticipantState with custom user data.
  • Added CallType to statically track the type of call (audio, video, screen share).

0.3.1 #

  • Important: Fixes crash for CallKit on iOS.
  • Added support for SFU migration to improve video resilience.
  • Fixes for streaming flags in CallState (backstage, broadcasting, recording).

0.3.0 #

🚧 Breaking changes

  • Removed the incomingCallerNameOverride and incomingCallerHandlerOverride from StreamVideoPushParams in favor of the new callerCustomizationCallback in StreamVideoPushNotificationManager.

βœ… Added

  • callerCustomizationCallback to StreamVideoPushNotificationManager that allow dynamic customization of CallKit call screen

Example usage:

pushNotificationManagerProvider: StreamVideoPushNotificationManager.create(
    ...
    callerCustomizationCallback: ({required callCid, callerHandle, callerName}) =>
          CallerCustomizationResponse(name: "Customized $callerName"),
    ),
  • Added a includeUserDetails field to determine if user details should be passed to backend when connecting user.
  • Exposed call coordinator events through the coordinatorEvents stream in the Call class.
  • Added team, notify, and custom properties to getOrCreate() for Call.

🐞 Fixed

  • Added Apple audio configuration to make audio work in silent mode.
  • Fixes queryCalls response mapping.

πŸ”„ Changed

0.2.0 #

βœ… Added

  • removeMembers and updateCallMembers to Call

πŸ”„ Changed

Breaking changes 🚧

  • renamed inviteUsers to addMembers in Call
  • renamed parameter name in getOrCreateCall from participantIds to memberIds

0.1.1 #

  • Fixed call join bug
  • Fixed CallKit call not ending bug
  • Anonymous users can no longer connect to WS
  • Users can no longer join a call twice

0.1.0 #

  • Aligned SDK initialization with other SDKs
  • Fixed callkit and push implementation for SDK
  • Added parsing for CallPermissions
  • Fix duplicate participants in call
  • General bug fixes and improvements

0.0.3 #

  • Updated minimum supported SDK version to Flutter 3.10/Dart 3.0

0.0.2 #

  • Updates for backend
  • Support for reactions

0.0.1+1 #

  • Fixed README

0.0.1 #

  • Initial beta release of Stream Video πŸš€