Released: 2026-03-25 Updated: 2026-03-27
Summary: Breaking changes - behavior for SetBOOption, return type of SetBOOption, change OnStartSendShare to asynchronous; add support for new talkback feature; hide the annotation toolbar when screen sharing in the custom UI.
Breaking changes
-
Change the behavior for the function
SetBOOptionso that when it is called before a breakout room is created, the function returns an error.- Change the return type of function
SetBOOptionfrombooltoSDKError.virtual SDKError SetBOOption(const BOOption& option) = 0; - Add new error code.
enum SDKError { // .................................................... /** Returned when attempting to set breakout room options before any breakout room has been created.*/ SDKERR_BREAKOUT_ROOM_NOT_CREATED // ..................................................... };
- Change the return type of function
-
Adapt the Zoom client change to make the callback
OnStartSendSharebecome asynchronous. -
CreateAnnotateHelpershould not be called immediately after starting a share. Only invoke it after receiving the share start callback, indicating that the sharing session is ready.
Added
-
Support talkback audio feature.
-
New interface in
IMeetingServiceclass.class IMeetingService { public: // ................... virtual IMeetingTalkbackController* GetMeetingTalkbackController() = 0; // ................... }; -
New interface in
IUserInfoclass.class IUserInfo { // ............................................................ virtual bool IsSupportTalkback() = 0; // ............................................................ }; -
New class
IMeetingTalkbackChannel.class IMeetingTalkbackChannel { public: virtual ~IMeetingTalkbackChannel() {} virtual const zchar_t* GetChannelID() = 0; virtual IList<unsigned int>* GetUserIDList() = 0; }; -
New class
IMeetingTalkbackCtrlEvent.class IMeetingTalkbackCtrlEvent { public: virtual ~IMeetingTalkbackCtrlEvent() {} enum TalkbackError { /**Operation executed successfully. */ TALKBACK_ERROR_OK, /**Permission denied. */ TALKBACK_ERROR_NOPERMISSION, /**The object being operated on already exists, for example: the invited user is already in the channel. */ TALKBACK_ERROR_ALREADY_EXIST, /**The number of channels exceeded the limit. */ TALKBACK_ERROR_COUNT_OVERFLOW, /**The object being operated on does not exist. */ TALKBACK_ERROR_NOT_EXIST, /**Operation denied. */ TALKBACK_ERROR_REJECTED, /**Operation timed out. */ TALKBACK_ERROR_TIMEOUT, /**Unknown reason. */ TALKBACK_ERROR_UNKNOWN }; virtual void onCreateChannelResponse(const zchar_t* channelID, TalkbackError error) = 0; virtual void OnDestoryChannelResponse(const zchar_t* channelID, TalkbackError error) = 0; virtual void onChannelUserJoinResponse(const zchar_t* channelID, unsigned int userID, TalkbackError error) = 0; virtual void onChannelUserLeaveResponse(const zchar_t* channelID, unsigned int userID, TalkbackError error) = 0; virtual void onJoinTalkbackChannel(unsigned int inviterID) = 0; virtual void onLeaveTalkbackChannel(unsigned int inviterID) = 0; }; -
New class
IMeetingTalkbackController.class IMeetingTalkbackController { public: virtual ~IMeetingTalkbackController() {} virtual SDKError SetEvent(IMeetingTalkbackCtrlEvent* pEvent) = 0; virtual SDKError CreateChannel(unsigned int count) = 0; virtual IMeetingTalkbackChannel* GetChannelByID(const zchar_t* channelID) = 0; virtual IList<IMeetingTalkbackChannel*>* GetChannelList() = 0; virtual SDKError BeginBatchDestroyChannels() = 0; virtual SDKError AddChannelToDestroy(const zchar_t* pChanID) = 0; virtual SDKError RemoveChannelFromDestroy(const zchar_t* pChanID) = 0; virtual SDKError ExecuteBatchDestroyChannels() = 0; virtual SDKError BeginBatchInviteUsers(const zchar_t* channelID) = 0; virtual SDKError AddUserToInvite(unsigned int userID) = 0; virtual SDKError RemoveUserFromInvite(unsigned int userID) = 0; virtual SDKError ExecuteBatchInviteUsers() = 0; virtual SDKError BeginBatchRemoveUsers(const zchar_t* channelID) = 0; virtual SDKError AddUserToRemove(unsigned int userID) = 0; virtual SDKError RemoveUserFromRemoveList(unsigned int userID) = 0; virtual SDKError ExecuteBatchRemoveUsers() = 0; virtual SDKError SendAudioDataToChannel(const zchar_t* channelID, const char* pAudioData, unsigned int dataLength, unsigned int sampleRate, ZoomSDKAudioChannel channel) = 0; virtual SDKError SetChannelBackgroundVolume(const zchar_t* channelID, float backgroundVolume) = 0; virtual bool IsMeetingSupportTalkBack() = 0; };
-
-
Add support for selecting virtual backgrounds in pre-meeting preview.
-
New enum value in
RequiredInfoType.enum RequiredInfoType { // ... REQUIRED_INFO_TYPE_AVPreview, }; -
New interface in class
IMeetingPasswordAndScreenNameHandler.class IMeetingPasswordAndScreenNameHandler { // ... virtual SDKError ConfirmPreview(const zchar_t* screenName, bool videoOn, bool audioOn) = 0; };
-
Changed
- Hide the annotation toolbar when screen sharing in the custom UI.