Skip to main content
Version: 1.2

Release notes

This page provides the release notes of PlanetKit 1.2 for Flutter.

v1.2

Release date: 2026-08-03

Support contents sharing

Added support for contents sharing to 1-to-1 calls and group calls. Local users can set or unset binary data as normal, exclusive, or room shared contents, and receive callbacks when peers change their shared contents.

  • Normal shared contents are per-user; multiple users can each hold their own value simultaneously.
  • Exclusive shared contents allow only one active value per session; only the first setter can modify or unset it, and the value is cleared when the setter leaves the call.
  • Room shared contents (group call only) remain valid after the setter leaves the call and can be updated by any participant.

API

Added
  • PlanetKitCall class 1-to-1 call

    • Future<bool> setExclusivelySharedContents(Uint8List data) async
    • Future<bool> setSharedContents(Uint8List data) async
    • Future<bool> unsetExclusivelySharedContents() async
    • Future<bool> unsetSharedContents() async
  • PlanetKitCallEventHandler class 1-to-1 call

    • final void Function(PlanetKitCall call, Uint8List data, Duration elapsed)? onPeerExclusivelySharedContentsSet
    • final void Function(PlanetKitCall call)? onPeerExclusivelySharedContentsUnset
    • final void Function(PlanetKitCall call, Uint8List data, Duration elapsed)? onPeerSharedContentsSet
    • final void Function(PlanetKitCall call)? onPeerSharedContentsUnset
  • PlanetKitConference class Group call

    • Future<bool> setExclusivelySharedContents(Uint8List data) async
    • Future<bool> setRoomSharedContents(Uint8List data) async
    • Future<bool> setSharedContents(Uint8List data) async
    • Future<bool> unsetExclusivelySharedContents() async
    • Future<bool> unsetRoomSharedContents() async
    • Future<bool> unsetSharedContents() async
  • PlanetKitConferenceEventHandler class Group call

    • final void Function(PlanetKitConference conference, PlanetKitConferencePeer peer, Uint8List data, Duration elapsed)? onPeerExclusivelySharedContentsSet
    • final void Function(PlanetKitConference conference, PlanetKitConferencePeer peer)? onPeerExclusivelySharedContentsUnset
    • final void Function(PlanetKitConference conference, PlanetKitUserId peerId, Uint8List data, Duration elapsed)? onPeerRoomSharedContentsSet
    • final void Function(PlanetKitConference conference, PlanetKitUserId peerId)? onPeerRoomSharedContentsUnset
    • final void Function(PlanetKitConference conference, List<PlanetKitConferenceSharedContents> sharedContents)? onPeersSharedContentsSet
    • final void Function(PlanetKitConference conference, List<PlanetKitConferencePeer> peers)? onPeersSharedContentsUnset
  • PlanetKitConferenceSharedContents class Group call

Support data sessions

Added support for data session to 1-to-1 calls and group calls. Applications can use binary data streams identified by a stream ID in the range 100–999, and choose from four transmission types: reliable message, reliable bytes, unreliable bytes, and unreliable message.

  • Create an outbound session with makeOutboundDataSession and send data with PlanetKitOutboundDataSession.send(data, timestamp).
  • Receive an incoming stream notification through onDataSessionIncoming, and create an inbound session with makeInboundDataSession to receive data.
  • Call unsupportInboundDataSession to reject an incoming stream that the app does not intend to handle.
  • Retarget an outbound session to a specific peer with PlanetKitOutboundDataSession.changeDestination(target), or pass null to send to all peers. The current receiver is exposed through the target getter. This is meaningful for group calls.

API

Added
  • PlanetKitDataSessionStreamId typedef 1-to-1 callGroup call

  • PlanetKitCall class 1-to-1 call

    • Future<PlanetKitInboundDataSession?> getInboundDataSession(PlanetKitDataSessionStreamId streamId)
    • Future<PlanetKitOutboundDataSession?> getOutboundDataSession(PlanetKitDataSessionStreamId streamId)
    • bool isDataSessionSupported
    • Future<PlanetKitMakeInboundDataSessionResult> makeInboundDataSession(PlanetKitDataSessionStreamId streamId, PlanetKitInboundDataSessionHandler handler)
    • Future<PlanetKitMakeOutboundDataSessionResult> makeOutboundDataSession(PlanetKitDataSessionStreamId streamId, PlanetKitDataSessionType type, PlanetKitOutboundDataSessionHandler handler)
    • Future<bool> unsupportInboundDataSession(PlanetKitDataSessionStreamId streamId)
  • PlanetKitCallEventHandler class 1-to-1 call

    • final void Function(PlanetKitCall call, PlanetKitDataSessionStreamId streamId, PlanetKitDataSessionType type)? onDataSessionIncoming
  • PlanetKitConference class Group call

    • Future<PlanetKitInboundDataSession?> getInboundDataSession(PlanetKitDataSessionStreamId streamId)
    • Future<PlanetKitOutboundDataSession?> getOutboundDataSession(PlanetKitDataSessionStreamId streamId)
    • Future<PlanetKitMakeInboundDataSessionResult> makeInboundDataSession(PlanetKitDataSessionStreamId streamId, PlanetKitInboundDataSessionHandler handler)
    • Future<PlanetKitMakeOutboundDataSessionResult> makeOutboundDataSession(PlanetKitDataSessionStreamId streamId, PlanetKitDataSessionType type, PlanetKitOutboundDataSessionHandler handler)
    • Future<bool> unsupportInboundDataSession(PlanetKitDataSessionStreamId streamId)
  • PlanetKitConferenceEventHandler class Group call

    • final void Function(PlanetKitConference conference, PlanetKitDataSessionStreamId streamId, PlanetKitDataSessionType type)? onDataSessionIncoming
  • PlanetKitConferencePeer class Group call

    • final bool isDataSessionSupported
  • PlanetKitDataSessionClosedReason enum 1-to-1 callGroup call

    • internal
    • sessionEnd
    • unsupported
  • PlanetKitDataSessionFailReason enum 1-to-1 callGroup call

    • alreadyExist
    • internal
    • invalidId
    • invalidType
    • none
    • notIncoming
  • PlanetKitDataSessionType enum 1-to-1 callGroup call

    • reliableBytes
    • reliableMessage
    • unreliableBytes
    • unreliableMessage
  • PlanetKitInboundDataSession class 1-to-1 callGroup call

  • PlanetKitInboundDataSessionHandler class 1-to-1 callGroup call

  • PlanetKitMakeInboundDataSessionResult class 1-to-1 callGroup call

  • PlanetKitMakeOutboundDataSessionResult class 1-to-1 callGroup call

  • PlanetKitOutboundDataSession class 1-to-1 callGroup call

    • PlanetKitUserId? get target
    • Future<bool> changeDestination(PlanetKitUserId? target) async
  • PlanetKitOutboundDataSessionHandler class 1-to-1 callGroup call

Support sending short data

Added support for sending short data to 1-to-1 calls and group calls. Applications can send typed binary payloads to call peers and receive incoming payloads through callbacks.

  • In group calls, sendShortData broadcasts to all participants; sendShortDataToPeer targets a specific participant by PlanetKitUserId.
  • The type string must be 100 bytes or less (including the null terminator); the data payload must be 800 bytes or less.

API

Added
  • PlanetKitCall class 1-to-1 call

    • Future<bool> sendShortData({required String type, required Uint8List data}) async
  • PlanetKitCallEventHandler class 1-to-1 call

    • final void Function(PlanetKitCall call, String type, Uint8List data)? onShortDataReceived
  • PlanetKitConference class Group call

    • Future<bool> sendShortData({required String type, required Uint8List data}) async
    • Future<bool> sendShortDataToPeer({required PlanetKitUserId peerId, required String type, required Uint8List data}) async
  • PlanetKitConferenceEventHandler class Group call

    • final void Function(PlanetKitConference conference, PlanetKitUserId senderId, String type, Uint8List data)? onShortDataReceived

Support screen share transmission on Android

Added support for sending screen share streams in 1-to-1 calls and group calls on Android. Applications can start and stop transmitting the local screen using startMyScreenShare() and stopMyScreenShare().

Note

On iOS, startMyScreenShare() and stopMyScreenShare() always return false. iOS requires the broadcast extension flow for screen share, which is not covered by these methods.

API

Added
  • PlanetKitCall class 1-to-1 call

    • Future<bool> startMyScreenShare() async
    • Future<bool> stopMyScreenShare() async
  • PlanetKitConference class Group call

    • Future<bool> startMyScreenShare() async
    • Future<bool> stopMyScreenShare() async

Add version information API

Added PlanetKitManager.getVersionInfo() to expose SDK and plugin version information. The returned PlanetKitVersionInfo provides sdkVersion, pluginVersion, and userAgent.

  • The userAgent field is available only after initializePlanetKit() has been called.

API

Added
  • PlanetKitManager class 1-to-1 callGroup call

    • Future<PlanetKitVersionInfo?> getVersionInfo()
  • PlanetKitVersionInfo class 1-to-1 callGroup call

Support app server data

Added support for passing app server data when making a call or joining a conference. The app server data is delivered to the app server when the call or conference starts.

  • Set app server data using setAppServerData() on the param builder before making the call or joining the conference.
  • The appServerData field is optional; if not set, no data is sent.

API

Added
  • PlanetKitMakeCallParam class 1-to-1 call

    • final String? appServerData
  • PlanetKitMakeCallParamBuilder class 1-to-1 call

    • PlanetKitMakeCallParamBuilder setAppServerData(String appServerData)
  • PlanetKitJoinConferenceParam class Group call

    • final String? appServerData
  • PlanetKitJoinConferenceParamBuilder class Group call

    • PlanetKitJoinConferenceParamBuilder setAppServerData(String appServerData)