Related to similar topic, I am looking for two callbacks from Zoom SDK, if they are already present somewhere in SDK.
Callback when the left floating panel with button 1,2,3, 4 appears. May be a delegate in SDK which I can listen to. I want to show the buttons in the app, only when they are visible in Zoom UI.
Callback when Zoom UI full screen state changes, I figured that when a user is already sharing the screen and I join that meeting, zoom app automatically move me to full screen which results in incorrect button state
I found a property on ZoomSDKMeetingActionController
/**
* @brief Determine if the user can swap to show sharing screen or video now.
* @return YES means can, otherwise not.
*/
open func canSwapToShowShareViewOrVideo() -> Bool
I am getting this as false for my user, will this property value change when somebody started a screen share and button 4 is visible in zoom UI?
I can use this to show hide button 4 initially, but when somebody shared the screen and it is updated, I could not find any callback for it.
Jon is currently out, so I will be taking over this thread until he returns.
Within ZoomSDKMeetingUIController, there are various interfaces that may be useful to you. You can use getWallViewPageInfo to get page info of the wall view, and showPreOrNextPageWallView to navigate through it.
Unfortunately there are not callbacks to alert of these buttons being pressed or the current state. However, you can control these programmatically with these functions in ZoomSDKMeetingUIController
This is NOT the same as the one I asked for. May I ask you to check with engineering (feel free to use the screenshots I provided)? Shall the interfaces be still not available may you please create a feature request for us?
With regards to those switchFloat* buttons I can control them, yes. But I want to show the correct current state to the user and without a call like that I can’t. Can you add it by any chance?
Apologies for the mixup in platforms earlier! I can assure you that Michael has properly submitted the feature request for macOS and not Android as the links suggest.
I will be sure to give you an update once we have more information! Also, since there is a lot of information in this thread nowadays, please let me know if there is any additional action needed that I may have overlooked (other than the two feature requests Michael submitted last week).
I just tested again with both SDKs to see the difference, While doing that I figured out the problem was indeed in my code.
I was setting the delegate in the initialiser of my custom class and seems like ZoomSDKASController is nil at that time. Now I am setting it right after calling the joinMeeting function and it works fine now.
But does that mean, the ZoomSDKASController, ZoomSDKMeetingUIController, ZoomSDKMeetingActionController are recreated for every meeting?
Should I set the delegate every time I start a meeting?
So, an instance of ZoomSDKMeetingService will be created after the SDK has been authed/initialized. When the ZoomSDKMeetingService is created, it will also create the instances of ZoomSDKMeetingUIController and ZoomSDKMeetingActionController. These instances will stay around for the duration of the ZoomSDKMeetingService.
However, an instance of ZoomSDKASController is not created until the user has been admitted into a meeting. From there the ZoomSDKASController will stay around for the duration of the ZoomSDKMeetingService. So [[[ZoomSDK sharedSDK] getMeetingService] getASController] will return nil until the user has entered a meeting.
Yes for the ZoomSDKASController delegate. Only because ZoomSDKASController will be nil until the user has joined into a meeting. If the user is going to be joining multiple meetings throughout the app’s lifecycle, you could keep resetting the delegate every time the user joins. However, the instance of ZoomSDKASController remains constant after the first meeting.
Thanks @Michael_Condon
Now it is clear to me. I was expecting it to behave like ZoomSDKMeetingActionController and ZoomSDKMeetingActionController as those delegates are also set in the initialisers.