Interfacing with the Zoom desktop app (macOS and Windows) through the SDK

Hi, I’d like to develop an application that can run beside Zoom on macOS and Windows, and control and query various elements of an ongoing meeting. Say for example, muting the microphone or camera, or getting the current status of the mic/camera.

I’m very confused as to which SDK would allow me to do this. Can someone please point me in the right direction?

I’m developing on macOS Big Sur (Xcode 12). The sample app that comes with the Desktop Client SDK fails to build. I’ve successfully added the framework to my CMake build script and compiled and linked it. None of the API calls seem to do much, I get an error code of 0 when trying to authenticate with my credentials (which should be OK), but the onZoomSDKAuthReturn delegate method is never called.

Do I need to use JWT to authenticate with the Zoom services, or is the key and secret from my developer account sufficient?

Which steps do I need to take in order to connect to an ongoing meeting (in the same computer)?

I would be very helpful if someone could point me in the right direction.

The SDK will not allow you to control a running instance of the standard Zoom client. Rather, it is a complete replacement for the standard Zoom client that looks almost the same but has the API to allow you to do everything programmatically that you could do from the GUI. You would need to join the meeting solely through your custom SDK-based app and then control it that way.

Alternatively, you could use the standard Zoom client on its own while simultaneously running an SDK-based app on the same computer, connected to the same meeting, in order to control things. In this case, you could opt not to use the standard Zoom SDK GUI and instead put your app into custom UI mode. This would allow you to start from scratch on what you want your UI to look like, which could very well include no video or audio interactivity and focus on meeting controls.

Thanks for the reply. I guess I’ve completely misunderstood the SDK’s functions.

Just to be clear, would I need to join the meeting explicitly in my custom app (would I appear as another guest, do I need to know the meeting ID)?

Are there any events or triggers from the standard zoom client I could hook up to to make the integration smoother? I just want to control the standard zoom client with my app.

Hi @dingari, thanks for using our SDK (and thank you @TimP for helping out!)

I just want to control the standard zoom client with my app.

While you cannot run the Zoom client through the SDK, the macOS SDK will allow you to launch a window containing the same Zoom meeting UI as the Zoom client. In addition, the SDK provides interfaces that allow programmatic equivalents of most of the meeting controls.

muting the microphone or camera, or getting the current status of the mic/camera.

Some of the available audio controls can be found here, and video options are available here.

Additionally, I noticed that you are using Xcode 12. Currently the SDK supports up to Xcode 10.X, but we are working on Xcode 12 support for our next release.

Please let me know if you have any additional questions on using the SDK and I will be happy to help. :slightly_smiling_face:

Thanks!

Ok, @jon.lieblich, that sounds promising.

So, if I understand correctly, I should be able to launch the standard Zoom client, join a meeting, launch my own app, and access the meeting controls through the SDK?

How can I join the meeting from my app? Do I need to know the ID, or does the user have to log in through our app as well?

Should I be using the Client SDK or the Fully Customizable SDK?

Hi @dingari,

So, if I understand correctly, I should be able to launch the standard Zoom client, join a meeting, launch my own app, and access the meeting controls through the SDK?

There is no need to join the meeting through the Zoom client. The SDK supports joining meetings through the ZoomSDKMeetingService class.

How can I join the meeting from my app? Do I need to know the ID, or does the user have to log in through our app as well?

There are several methods of joining or starting a meeting through the SDK, some of which would require user authentication. Unless you are starting an instant meeting, the meeting number is always required.

Should I be using the Client SDK or the Fully Customizable SDK?

The Fully Customizable SDK is session-based and does not use Zoom meetings. If you are planning on joining meetings, the Client SDK is the correct option. :slightly_smiling_face:

Thanks!

Hi @jon.lieblich,

Thanks for clarifying. I think we’re getting somewhere. I’ll try to give you some context on what I’m trying to achieve.

I want to develop a support app that can interface with an ongoing meeting in the same computer (using the standard Zoom client). I don’t want to develop and maintain a whole new client for people to use.

Can this be done?

Hi @dingari,

The SDK must be used to join a meeting if you wish to utilize any of the functionality built into it. It cannot be used to extend the functionality of the client, as your SDK application will be running its own instance of the Zoom meeting.

I don’t want to develop and maintain a whole new client for people to use.

The SDK provides the same functionality and UI of the Zoom client, which you do not need to implement or maintain. To get a better idea of what the SDK provides, please download the SDK package and try out the sample app.

Thanks!

Hi @jon.lieblich

Thanks for clarifying. But just to be absolutely clear, there’s no way of getting external control over a meeting in the standard Zoom client? Not even via the web api? At least getting information like the current audio/video status?

The idea of having people go through another application than they’re used to, even if it has the same UI, is pretty off-putting. And we’d have to keep updating it as the standard client is updated?

To get a better idea of what the SDK provides, please download the SDK package and try out the sample app.

I would, but as I said, the Xcode example project from the SDK is not compatible with my current development setup.

Not to try and sell our app, but you might want to try zoomOSC which we are developing - this allows you to control a meeting and interrogate its status over OSC which is a pretty standard protocol. We have a solid bitfocus companion integration. This could do what it sounds like you’re looking for, and obviate the need for you to develop something yourself.

details at https://www.liminalet.com/zoomosc

2 Likes

Hi @dingari,

But just to be absolutely clear, there’s no way of getting external control over a meeting in the standard Zoom client?

The SDK is capable of accessing meeting controls, but only after joining the meeting through the SDK. After joining the meeting with the SDK, you will appear as another meeting attendee and can access any controls which that user would be able to access if they had joined through the client.

The idea of having people go through another application than they’re used to, even if it has the same UI, is pretty off-putting. And we’d have to keep updating it as the standard client is updated?

Our SDK offerings are primarily meant to allow developers to implement a Zoom meeting experience into their own applications. You are not required to keep up-to-date with every SDK release if you do not wish to do so, but we may in rare occasions force updates to a minimum SDK version under exceptional circumstances.

I would, but as I said, the Xcode example project from the SDK is not compatible with my current development setup.

If the sample project does not run in your environment due to Xcode versioning, the SDK will not either. Currently the SDK only supports up to Xcode 10.X, but we should be adding Xcode 12 support in the next release.

Thanks!

Hi @jon.lieblich - noted!

We’ve figured out an alternate method of controlling the standard Zoom client without the SDK.

Thanks so much for all your help :slightly_smiling_face:

Glad to hear it!

Please don’t hesitate to reach back out with a new post if you decide to pursue using the SDK in the future!