We are pleased to inform you that starting from v5.4.54524.1229, the Zoom SDK packages are moving to the Zoom App Marketplace. The packages are now available in the same location as your SDK Key & Secret. This change aims to provide you with a unified and seamless experience so that you can access the required SDK resources in one place.
If you have not used Zoom SDK before, please follow the steps in https://marketplace.zoom.us/docs/guides/build/sdk-app to create an SDK app on the Marketplace.
If you already have an SDK app created, login to the Zoom App Marketplace using your developer account, click the Manage button on the top-right corner and locate your SDK app.
Click on your SDK app, you can find the desired SDK packages from the Download tab
In version 5.2.42037.1112 of the Electron SDK,the support for Protocol Buffers is being added.
If you are building your own version of the Electron SDK, you will need to follow these steps:
- Download protobuf 3.4.0 source file and rename the src folder to protobuf_src.
- Copy the src folder into the lib/node_add_on folder.
- Run the build_nodeaddon script.
If you would like to use recent versions of protobuf(higher than 3.4.0), in addition to following the above steps, you must also do the following:
- Download the execution file of the corresponding protobuf and add its directory into the system path.
- In the terminal, navigate to the root directory of the Electron SDK(same level as the build_nodeaddon file).
- Run protoc.exe —js_out=import_style=common.js,binary:. lib/electron_sdk_proto command in the terminal to generate a electron_sdk_pb.js file. After generating this file, you will be able to use the interfaces provided by the Electron SDK.
If you are not building your own version of the Electron SDK and are using the Electron SDK provided by Zoom, this change will not impact your app and no further action is required on your end.
Introducing new SDK initialization method -- JWT token, which is more secure, more convenient, and more versatile.
- How to compose JWT token for SDK initialization
You may generate your JWT token using the online tool https://jwt.io/. It is highly recommended to generate your JWT token in your backend server.
JWT is generated with three core parts: Header, Payload, and Signature. When combined, these parts are separated by a period to form a token: aaaaa.bbbbb.cccc.
Please follow this template to compose your payload for SDK initialization:
** Header
{
"alg": "HS256",
"typ": "JWT"
}
** Payload
{
"appKey": "string", // Your SDK key
"iat": long, // access token issue timestamp
"exp": long, // access token expire timestamp, max: iat + 2 days
"tokenExp": long // token expire timestamp, MIN:30 minutes
}
The minimum value of tokenExp
should be at least 30 minutes, otherwise, SDK will reject the authentication request.
** Signature
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
"Your SDK secret here"
)
You do not need to secret base64 encoded your signature. Once the JWT token is generated, please do not reveal it or publish it. It is highly recommended to handle your SDK key and secret and generate JWT in a backend server to be consumed by your application. Do not generate JWT in a production application.
- Added new enums.
ZoomSDKVideoCaptureMethod
ZoomSDKRenderPostProcessing
ZoomSDKVideoHardwareEncodeType
- Added a new interface to set team identifier on macOS
SetTeamIdentifier
- Added new parameters to interface
initSDK
in zoom_sdk.js- Added
renderPostProcessing
andvideoCaptureMethod
- Added
- Added new parameters to interface
Setting_EnableHardwareEncode
in zoom_setting_video.js- Added
encodeType
- Added
- Added new parameters to interface
Setting_IsHardwareEncodeEnabled
in zoom_setting_video.js- Added
encodeType
- Added
- Removed the watermark by default. If you wish to retain the Zoom watermark, please contact us via [email protected].
-
[Mac] Fixed an issue that the virtual background does not work after re-signing the SDK libraries.
- SDK will verify the signature of all libraries. When the SDK libraries have been resigned, please call the interface
setTeamIdentifier
to set the organization unit of the signature before intializing in the app.
setTeamIdentifier(“the ou of certificate”);
- SDK will verify the signature of all libraries. When the SDK libraries have been resigned, please call the interface
-
[Mac] Fixed an issue that the keychain popup dialog contains 'Zoom', the new keychain pops up will use the app's name instead.
- Upgrade Electron support to v8.2.4
- Added a new interface isH323User to check whether the user is an H.323 user
- Added a new interfaces to get participant ID
- Added local and cloud recording feature.
- Interfaces in
zoom_meeting_recording.js
- Interfaces in
- Added Vietnamese and Italian language support.
- Fixed an issue that the customized XML file does not work.
- Fixed an issue that the onFreeMeetingNeedToUpgrade callback is causing a crash
- Upgraded Zoom default UI to match Zoom client 5.0.
- Optimized the status of H.323 call out by adding the following status:
H323Callout_Busy
H323Callout_Decline
- [MacOS only] Added a new interface
HideRecordingsNotification
to hide recording notification. - Added a new parameter
userZAK
inJoinMeetingWithoutLogin
- Added a new parameter to generate dump for troubleshooting in the
initsdk
interfaceenableGenerateDump
- Added a new interface to enable or to check the video preview dialog
EnableVideoPreviewDialog
IsVideoPreviewDialogEnabled
- Redefine the parameters in the interface
StartMeetingWithOutLogin
and removeusertoken
. - Predefine the value of the
langid
parameter in theinitsdk
to beunknown
, which means the SDK will use the language configuration of the OS. - Temporary remove the "Unmute all" interfaces.
- Added support for AES 256-bit GCM encryption.
- Please plan to upgrade your SDK accordingly. See the announcement in README for more information
- Upgraded OpenSSL to version 1.1.1e
- [Electron SDK on Mac only]Add a new interface to disable the toolbar invite button
MeetingConfig_DisableToolbarInviteButtonClickOriginAction
inzoom_meeting_configuration.js
- Add a new interface to control the chime sound when someone enters or exits the meeting
MeetingAudio_EnablePlayChimeWhenEnterOrExit
inzoom_meeting_audio.js
- Add new option in InitSDK to configure the size of the log file
- Use the new option
InitSDK.logfilesize
inzoom_sdk.js
to customize the log file size. The unit of the file size is MB, with default size 5MB.
- Use the new option
- Fixed an issue that the interface
MeetingUI_BackToMeeting
does not work as expected for webinar attendee on Windows - Fixed an issue that user could not join a meeting with vanityID
- New enhancements follow the changes in Windows SDK and Mac OS SDK.
- Enhanced security and upgraded OpenSSL to 1.0.2u.
- Changes and fixes follow the changes in Windows SDK and Mac OS SDK.
- Add new interfaces for SDK initialization with JWT token.
AuthWithJwtToken(sdk_context)
- Add new interfaces in the meeting configuration service (Details available in
zoom_meeting_configuration.js
). MeetingConfig_EnableApproveRemoteControlDlg
MeetingConfig_EnableDeclineRemoteControlResponseDlg
MeetingConfig_SetShowCallInTab
MeetingConfig_SetShowCallMeTab
MeetingConfig_RedirectClickParticipantListBTNEvent
MeetingConfig_RedirectClickCCBTNEvent
- Add new interfaces in the setting service (Details available in
zoom_setting_general.js
).Setting_EnableAutoFullScreenVideoWhenViewShare
Setting_IsAutoFullScreenVideoWhenViewShareEnabled
Setting_EnableShowMyMeetingElapseTime
Setting_IsShowMyMeetingElapseTimeEnabled
- Add new callbacks for the events of clicking related buttons.
SetonStartShareBtnClickedCB
SetonEndMeetingBtnClickedCB
SetonParticipantListBtnClickedCB
- Add support for Electron 6 & 7. (Note: In order to support Electron 7, the Electron 3 or ealier version is no longer supported)
- Remove the support for Electron 3 or earlier version.
- Fixed an issue that the callback of direct share can not be received accidentally.
- Fixed an issue that the meeting restarts for a few times after pressing the end meeting button.
- Add new interfaces for meeting config controller (locate in
zoom_meeting_configuration.js
)MeetingConfig_Reset()
MeetingConfig_EnableAutoAdjustSpeakerVolumeWhenJoinAudio()
- param {Boolean} bEnable
MeetingConfig_EnableAutoAdjustMicVolumeWhenJoinAudio()
- param {Boolean} bEnable
MeetingConfig_ConfigDSCP()
- param {Number} dscpAudio Configure DSCP value for audio
- param {Number} dscpVideo Configure DSCP value for video
- param {Boolean} bReset
MeetingConfig_EnableHideFullPhoneNumber4PureCallinUser()
- param {Boolean} bHide
MeetingConfig_EnableLengthLimitationOfMeetingNumber()
- param {Boolean} bEnable
MeetingConfig_EnableShareIOSDevice()
- param {Boolean} bEnable
MeetingConfig_EnableShareWhiteBoard()
- param {Boolean} bEnable
MeetingConfig_ForceDisableMultiShare()
- param {Boolean} bDisable
MeetingConfig_SetMaxDurationForOnlyHostInMeeting()
- param {Number} nDuration
MeetingConfig_EnableLocalRecordingConvertProgressBarDialog()
- param {Boolean} bShow
- Add new interfaces for meeting UI controller (locate in
zoom_meeting_ui_ctrl.js
)MeetingUI_BackToMeeting()
MeetingUI_GetMeetingUIWnd()
MeetingUI_SwitchMinimizeUIMode4FristScreenMeetingUIWnd()
- param {Number} mode
MeetingUI_IsMinimizeModeOfFristScreenMeetingUIWnd()
MeetingUI_SwapToShowShareViewOrVideo()
- param {Boolean} mode
MeetingUI_IsDisplayingShareViewOrVideo()
MeetingUI_CanSwapToShowShareViewOrVideo()
- Add a new interface for getting zoom SDK version (locate in
zoom_sdk.js
)GetZoomSDKVersion()
- Add a new interface for joining a meeting using zoom web url (locate in
zoom_meeting.js
)HandleZoomWebUriProtocolAction()
- Add new interfaces for setting UI strategy (locate in
zoom_setting_ui_ctrl.js
)SettingUI_DisableAdvancedFeatures4GeneralSetting()
- param {Boolean} bDisable
SettingUI_DisableAccountSettingTabPage()
- aram {Boolean} bDisable
SettingUI_ConfSettingDialogShownTabPage()
- param {Number} number settingDlgShowTabPageOption, Every bit indicates whether to show a certain tab page
- bit 1: indicates whether to show the virtual background page. "1" show, "0" not show
- bit 2: indicates whether to show the video page. "1" show, "0" not show
- bit 3: indicates whether to show the statistics page. "1" show, "0" not show
- bit 4: indicates whether to show the recording page. "1" show, "0" not show
- bit 5: indicates whether to show the general page. "1" show, "0" not show
- bit 6: indicates whether to show the feedback page. "1" show, "0" not show
- bit 7: indicates whether to show the audio page. "1" show, "0" not show
- bit 8: indicates whether to show the advance feature page. "1" show, "0" not show
- bit 9: indicates whether to show the accessibility page. "1" show, "0" not show
- Add pre-meeting features that include schedule/edit/delete a meeting, get a list of current meetings or set corresponding callbacks. All new interfaces are available in
ZoomNodePremeetingWrap
: ZoomNodePremeetingWrap::ScheduleMeetingWithWndParams(const v8::FunctionCallbackInfo<v8::Value>& args);
ZoomNodePremeetingWrap::ScheduleMeeting(const v8::FunctionCallbackInfo<v8::Value>& args);
ZoomNodePremeetingWrap::EditMeetingWithWndParams(const v8::FunctionCallbackInfo<v8::Value>& args);
ZoomNodePremeetingWrap::EditMeeting(const v8::FunctionCallbackInfo<v8::Value>& args);
ZoomNodePremeetingWrap::ListMeeting(const v8::FunctionCallbackInfo<v8::Value>& args);
ZoomNodePremeetingWrap::DeleteMeeting(const v8::FunctionCallbackInfo<v8::Value>& args);
ZoomNodePremeetingWrap::SetOnScheduleOrEditMeetingCB(const v8::FunctionCallbackInfo<v8::Value>& args);
ZoomNodePremeetingWrap::SetOnListMeetingCB(const v8::FunctionCallbackInfo<v8::Value>& args);
ZoomNodePremeetingWrap::SetOnDeleteMeetingCB(const v8::FunctionCallbackInfo<v8::Value>& args);
- Add callbacks for scheduling/editing/listing/deleting meeting
ZNativeSDKPreMeetingWrapSink::onScheduleOrEditMeeting(ZNPremeetingAPIResult result, unsigned long long meetingUniqueID);
ZNativeSDKPreMeetingWrapSink::onListMeeting(ZNPremeetingAPIResult result, unsigned long long meetingUniqueID);
ZNativeSDKPreMeetingWrapSink::onDeleteMeeting(ZNPremeetingAPIResult result, unsigned long long meetingUniqueID);
- Add direct share feature to allow sharing your screen/app/white_board directly after login with meetingNumber/paringCode. All new interfaces are available in
ZoomNodeDirectShareHelperWrap:
ZoomNodeDirectShareHelperWrap::CanStartDirectShare(const v8::FunctionCallbackInfo<v8::Value>& args);
ZoomNodeDirectShareHelperWrap::IsDirectShareInProgress(const v8::FunctionCallbackInfo<v8::Value>& args);
ZoomNodeDirectShareHelperWrap::StartDirectShare(const v8::FunctionCallbackInfo<v8::Value>& args);
ZoomNodeDirectShareHelperWrap::StopDirectShare(const v8::FunctionCallbackInfo<v8::Value>& args);
ZoomNodeDirectShareHelperWrap::SetDirectShareStatusUpdateCB(const v8::FunctionCallbackInfo<v8::Value>& args);
ZoomNodeDirectShareHelperWrap::TryWithMeetingNumber(const v8::FunctionCallbackInfo<v8::Value>& args);
ZoomNodeDirectShareHelperWrap::TryWithPairingCode(const v8::FunctionCallbackInfo<v8::Value>& args);
ZoomNodeDirectShareHelperWrap::Cancel(const v8::FunctionCallbackInfo<v8::Value>& args);
- Add a new callback for the status of direct sharing changes
ZNativeSDKDirectShareHelperWrapSink::OnDirectShareStatusUpdate(ZNDirectShareStatus status);
- Add 2 new interfaces for getting participants list and specific user's information
ZoomNodeMeetingParticipantsCtrlWrap::GetParticipantsList(const v8::FunctionCallbackInfo<v8::Value>& args);
ZoomNodeMeetingParticipantsCtrlWrap::GetUserInfoByUserID(const v8::FunctionCallbackInfo<v8::Value>& args);
- Add new callbacks for identifying the active speaker.
ZNativeSDKMeetingAudioWrapSink::onUserActiveAudioChange(ZNList<unsigned int > lstActiveAudio);
ZNativeSDKMeetingVideoWrapSink::onActiveSpeakerVideoUserChanged(unsigned int userId);
ZNativeSDKMeetingVideoWrapSink::virtual void onActiveVideoUserChanged(unsigned int userId);
- Optimized the way of setting callback functions. Most of the callbacks are now set by using "Set###CB" interfaces, such as
ZoomNodeAuthWrap::SetOnAuthReturnCB
. Some of the interfaces, such asZoomNodeAuthWrap::Auth
, need not pass a callback function as a parameter - Modified the types of
userId
andmeetingNumber
from String to Number.
We have merged and unified the windows-electron-sdk
and the mac-electron-sdk
into one single SDK.
The new Electron SDK has a brand new structure, consist of the node-interface
and the node-core
:
- Node-interface: contains all the implementations by V8 engine
- Node-core: contains all the uniform interfaces for both Windows and Mac
Due to the open source nature of this SDK, you will be able to configure and compile the new Zoom Electron SDK with any versions of Electron.
Added
- Added newly developed interfaces by referring to the previous Windows Electron SDK
- Added newly developed interfaces by referring to the previous Mac Electron SDK
- Can support any version of Electron