릴리스 노트
Flutter용 PlanetKit 1.2의 릴리스 노트입니다.
v1.2
릴리스 일자: 2026-08-03
콘텐츠 공유 지원
1대1 통화 및 그룹 통화에 콘텐츠 공유 기능을 추가했습니다. 로컬 사용자는 바이너리 데이터를 일반 공유, 독점적 공유, 방 범위 공유 콘텐츠로 설정하거나 해제할 수 있으며, 피어가 공유 콘텐츠를 변경할 때 콜백을 수신합니다.
- 일반 공유 콘텐츠는 사용자별로 적용되며, 여러 사용자가 각자의 값을 동시에 보유할 수 있습니다.
- 독점적 공유 콘텐츠는 세션당 하나의 활성값만 허용하며, 처음 설정한 사용자만 수정하거나 해제할 수 있고, 설정자가 통화를 떠나면 값이 초기화됩니다.
- 방 범위 공유 콘텐츠(그룹 통화 전용)는 설정자가 통화를 떠난 후에도 유효하게 유지되며, 모든 참가자가 업데이트할 수 있습니다.
API
추가
-
PlanetKitCallclass 1-to-1 callFuture<bool> setExclusivelySharedContents(Uint8List data) asyncFuture<bool> setSharedContents(Uint8List data) asyncFuture<bool> unsetExclusivelySharedContents() asyncFuture<bool> unsetSharedContents() async
-
PlanetKitCallEventHandlerclass 1-to-1 callfinal void Function(PlanetKitCall call, Uint8List data, Duration elapsed)? onPeerExclusivelySharedContentsSetfinal void Function(PlanetKitCall call)? onPeerExclusivelySharedContentsUnsetfinal void Function(PlanetKitCall call, Uint8List data, Duration elapsed)? onPeerSharedContentsSetfinal void Function(PlanetKitCall call)? onPeerSharedContentsUnset
-
PlanetKitConferenceclass Group callFuture<bool> setExclusivelySharedContents(Uint8List data) asyncFuture<bool> setRoomSharedContents(Uint8List data) asyncFuture<bool> setSharedContents(Uint8List data) asyncFuture<bool> unsetExclusivelySharedContents() asyncFuture<bool> unsetRoomSharedContents() asyncFuture<bool> unsetSharedContents() async
-
PlanetKitConferenceEventHandlerclass Group callfinal void Function(PlanetKitConference conference, PlanetKitConferencePeer peer, Uint8List data, Duration elapsed)? onPeerExclusivelySharedContentsSetfinal void Function(PlanetKitConference conference, PlanetKitConferencePeer peer)? onPeerExclusivelySharedContentsUnsetfinal void Function(PlanetKitConference conference, PlanetKitUserId peerId, Uint8List data, Duration elapsed)? onPeerRoomSharedContentsSetfinal void Function(PlanetKitConference conference, PlanetKitUserId peerId)? onPeerRoomSharedContentsUnsetfinal void Function(PlanetKitConference conference, List<PlanetKitConferenceSharedContents> sharedContents)? onPeersSharedContentsSetfinal void Function(PlanetKitConference conference, List<PlanetKitConferencePeer> peers)? onPeersSharedContentsUnset
-
PlanetKitConferenceSharedContentsclass Group call
데이터 세션 지원
1대1 통화 및 그룹 통화에 데이터 세션 기능을 추가했습니다. 애플리케이션은 100~999 범위의 스트림 ID로 식별되는 바이너리 데이터 스트림을 사용할 수 있으며, reliable message, reliable bytes, unreliable bytes, unreliable message의 네 가지 전송 유형 중 하나를 선택할 수 있습니다.
makeOutboundDataSession으로 아웃바운드 세션을 생성하고,PlanetKitOutboundDataSession.send(data, timestamp)로 데이터를 전송합니다.onDataSessionIncoming을 통해 수신 스트림 알림을 받고,makeInboundDataSession으로 인바운드 세션을 생성하여 데이터를 수신합니다.- 앱에서 처리하지 않을 수신 스트림은
unsupportInboundDataSession을 호출하여 거부합니다. PlanetKitOutboundDataSession.changeDestination(target)으로 아웃바운드 세션의 대상을 특정 피어로 변경하거나,null을 전달하여 모든 피어에게 전송합니다. 현재 수신자는targetgetter를 통해 확인할 수 있습니다. 이 기능은 그룹 통화에서 유용합니다.
API
추가
-
PlanetKitDataSessionStreamIdtypedef 1-to-1 callGroup call -
PlanetKitCallclass 1-to-1 callFuture<PlanetKitInboundDataSession?> getInboundDataSession(PlanetKitDataSessionStreamId streamId)Future<PlanetKitOutboundDataSession?> getOutboundDataSession(PlanetKitDataSessionStreamId streamId)bool isDataSessionSupportedFuture<PlanetKitMakeInboundDataSessionResult> makeInboundDataSession(PlanetKitDataSessionStreamId streamId, PlanetKitInboundDataSessionHandler handler)Future<PlanetKitMakeOutboundDataSessionResult> makeOutboundDataSession(PlanetKitDataSessionStreamId streamId, PlanetKitDataSessionType type, PlanetKitOutboundDataSessionHandler handler)Future<bool> unsupportInboundDataSession(PlanetKitDataSessionStreamId streamId)
-
PlanetKitCallEventHandlerclass 1-to-1 callfinal void Function(PlanetKitCall call, PlanetKitDataSessionStreamId streamId, PlanetKitDataSessionType type)? onDataSessionIncoming
-
PlanetKitConferenceclass Group callFuture<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)
-
PlanetKitConferenceEventHandlerclass Group callfinal void Function(PlanetKitConference conference, PlanetKitDataSessionStreamId streamId, PlanetKitDataSessionType type)? onDataSessionIncoming
-
PlanetKitConferencePeerclass Group callfinal bool isDataSessionSupported
-
PlanetKitDataSessionClosedReasonenum 1-to-1 callGroup callinternalsessionEndunsupported
-
PlanetKitDataSessionFailReasonenum 1-to-1 callGroup callalreadyExistinternalinvalidIdinvalidTypenonenotIncoming
-
PlanetKitDataSessionTypeenum 1-to-1 callGroup callreliableBytesreliableMessageunreliableBytesunreliableMessage
-
PlanetKitInboundDataSessionclass 1-to-1 callGroup call -
PlanetKitInboundDataSessionHandlerclass 1-to-1 callGroup call -
PlanetKitMakeInboundDataSessionResultclass 1-to-1 callGroup call -
PlanetKitMakeOutboundDataSessionResultclass 1-to-1 callGroup call -
PlanetKitOutboundDataSessionclass 1-to-1 callGroup callPlanetKitUserId? get targetFuture<bool> changeDestination(PlanetKitUserId? target) async
-
PlanetKitOutboundDataSessionHandlerclass 1-to-1 callGroup call
짧은 데이터 전송 지원
1대1 통화 및 그룹 통화에 짧은 데이터 전송 기능을 추가했습니다. 애플리케이션은 타입이 지정된 바이너리 페이로드를 통화 피어에게 전송하고, 콜백을 통해 수신 페이로드를 받을 수 있습니다.
- 그룹 통화에서
sendShortData는 모든 참가자에게 브로드캐스트하고,sendShortDataToPeer는PlanetKitUserId로 특정 참가자를 지정합니다. - 타입 문자열은 100바이트 이하(null 종료 문자 포함)여야 하며, 데이터 페이로드는 800바이트 이하여야 합니다.
API
추가
-
PlanetKitCallclass 1-to-1 callFuture<bool> sendShortData({required String type, required Uint8List data}) async
-
PlanetKitCallEventHandlerclass 1-to-1 callfinal void Function(PlanetKitCall call, String type, Uint8List data)? onShortDataReceived
-
PlanetKitConferenceclass Group callFuture<bool> sendShortData({required String type, required Uint8List data}) asyncFuture<bool> sendShortDataToPeer({required PlanetKitUserId peerId, required String type, required Uint8List data}) async
-
PlanetKitConferenceEventHandlerclass Group callfinal void Function(PlanetKitConference conference, PlanetKitUserId senderId, String type, Uint8List data)? onShortDataReceived
Android 화면 공유 전송 지원
Android의 1대1 통화 및 그룹 통화에서 화면 공유 스트림 전송 기능을 추가했습니다. 애플리케이션은 startMyScreenShare()와 stopMyScreenShare()를 사용하여 로컬 화면 전송을 시작하고 중지할 수 있습니다.
iOS에서는 startMyScreenShare()와 stopMyScreenShare()가 항상 false를 반환합니다. iOS의 화면 공유는 Broadcast Extension 방식을 사용해야 하며, 이 메서드로는 지원되지 않습니다.
API
추가
-
PlanetKitCallclass 1-to-1 callFuture<bool> startMyScreenShare() asyncFuture<bool> stopMyScreenShare() async
-
PlanetKitConferenceclass Group callFuture<bool> startMyScreenShare() asyncFuture<bool> stopMyScreenShare() async
버전 정보 API 추가
SDK 및 플러그인 버전 정보를 제공하는 PlanetKitManager.getVersionInfo()를 추가했습니다. 반환되는 PlanetKitVersionInfo는 sdkVersion, pluginVersion, userAgent를 제공합니다.
userAgent필드는initializePlanetKit()호출 이후에만 사용할 수 있습니다.
API
추가
-
PlanetKitManagerclass 1-to-1 callGroup callFuture<PlanetKitVersionInfo?> getVersionInfo()
-
PlanetKitVersionInfoclass 1-to-1 callGroup call
앱 서버 데이터 지원
통화를 시작하거나 컨퍼런스에 참여할 때 앱 서버 데이터를 전달하는 기능을 추가했습니다. 앱 서버 데이터는 통화 또는 컨퍼런스가 시작될 때 앱 서버로 전달됩니다.
- 통화를 시작하거나 컨퍼런스에 참여하기 전에 파라미터 빌더에서
setAppServerData()를 사용하여 앱 서버 데이터를 설정합니다. appServerData필드는 선택 사항이며, 설정하지 않으면 데이터가 전송되지 않습니다.
API
추가
-
PlanetKitMakeCallParamclass 1-to-1 callfinal String? appServerData
-
PlanetKitMakeCallParamBuilderclass 1-to-1 callPlanetKitMakeCallParamBuilder setAppServerData(String appServerData)
-
PlanetKitJoinConferenceParamclass Group callfinal String? appServerData
-
PlanetKitJoinConferenceParamBuilderclass Group callPlanetKitJoinConferenceParamBuilder setAppServerData(String appServerData)