vact_sdk 2.2.2
vact_sdk: ^2.2.2 copied to clipboard
Dependency-free one-to-one voice and video calling for VACT. Plain HTTPS plus WebRTC.
Changelog #
2.2.2 #
- Package page: per-platform permission setup (Android/iOS), an
example/, a fixedpubspecdependency snippet, and richer discovery metadata.
2.2.1 #
- Documentation refresh: correct install instructions and the current
vact_app_/vact_live_credential model.
2.2.0 #
VactCall.onRemoteTrack— fires when the remote party's media attaches toremoteStream. A renderer bound before the track exists stays black, so re-assignremoteRenderer.srcObjectin this callback. Fixes the receiver's video not showing.- No more stale ringing calls after a restart. A fresh
connectnow starts the event feed at the current tail instead of replaying the queue, so calls that ended before the app opened no longer pop up. - Faster call setup: the ICE/TURN configuration is cached per session, dropping a round-trip on every call after the first.
2.1.0 #
- The heartbeat now doubles as a liveness gate. If the server reports a call is no longer active — the other side hung up, a backend force-terminated it, or the sweep reclaimed it — the SDK tears the call's media down within one heartbeat, automatically. Nothing in your code changes.
2.0.0 #
The SDK no longer depends on Firebase. firebase_core, firebase_auth
and cloud_firestore are gone; the only dependencies are flutter_webrtc
and http. Nothing in the public API changed, so existing call code keeps
compiling — but you can delete those three packages from your pubspec.yaml.
- Sessions now use an opaque
vact_st_token instead of a Firebase custom token, so there is no Firebase app to initialise and nogoogle-services.json. - Signalling moved from Firestore listeners to a single long-poll on
/v1/events, which carries ringing calls, the answer SDP, remote ICE candidates, status changes and ICE-restart negotiation. - ICE candidates are submitted over REST and batched, so a burst of candidates is one request rather than a dozen document writes.
1.2.0 #
- Added
sessionExpiring, a stream that fires five minutes before the session expires and again at expiry. Previously a session simply stopped working with nothing to tell the app. - Added
renew(accessToken:), which swaps in a fresh session without interrupting an active call. A renewal for a different user is rejected. - Added
VactCall.stats, a quality sample roughly every two seconds: round-trip time, packet loss, jitter, bitrate, connection type and a 0-4qualityscore suitable for signal bars. - Added
VactCall.setAudioRoutefor speaker/earpiece selection, which mobile platforms otherwise default to the earpiece even on a video call.
1.1.0 #
- Capped the time a call may spend reconnecting; billing no longer continues while media is unrecoverable.
- Added a request timeout (default 20s, configurable via
requestTimeout). A stalled request previously hung until the OS gave up. apiBaseUrlmust now use HTTPS. An access grant and a Firebase ID token both travel on this connection.- Firebase is initialised before the one-time access grant is spent, so a configuration failure no longer burns the token.
- Call creation retries transient failures under one idempotency key instead of risking a duplicate ringing, billable call.
end()andcancel()retry before tearing down locally, so a hang-up is not billed to the sweep deadline.disconnect()now ends active calls server-side before signing out.- Firestore listener failures surface as a failed call instead of a silently stalled one.
- A second
connect()for an App ID that is already connected is rejected rather than signing the first client out.
1.0.0 #
- Added one-time backend-issued access-token exchange.
- Added outgoing and incoming one-to-one audio/video calls.
- Added managed TURN configuration, Firestore signalling and heartbeats.
- Added multi-device-safe accept, decline, cancel, end and device registration.
- Established the no-App-Secret client API boundary.