[ZoomVideoSDK] ScreenSharing does not show

Hello Developer Technical Support Team.

[Technical Environment]

  • Xcode 14.2
  • Zoom Video SDK v1.7.2 (3484)
  • SwiftUI/UIKit
  • Swift Concurrency(async/await)
  • Combine
  • The Composable Architecture
  • Swift Lang 5.x

[DESCRIPTION OF PROBLEM]
We are developing a service that incorporates the Zoom Video SDK for the web and iOS.
However When Screen Sharing from the web (Chrome Browser/Safari/Microsoft Edge), nothing is displayed on the iOS app during the call.

Please advise on how to solve this problem.

The implementation follows the “Zoom Developers - Video SDK Guide”
https://developers.zoom.us/docs/video-sdk/ios/

The iOS App side does not perform “screen sharing”, but only displays the content shared on the Web side.
The work in steps 1 to 7 of the developer guide has been bypassed and implemented from step 8,
“8. Manage the display of the shared content”.
https://developers.zoom.us/docs/video-sdk/ios/share/

(note)
CoreGraphics.framework, CoreVideo.framework, CoreMedia.framework, VideoToolbox.framework and ReplayKit are not integrated into the project.

If the app uses Zoom Video SDK 1.6.4, the shared screen is displayed but crashes, but if it uses 1.7.0 or 1.7.2, it does not crash but nothing is displayed on the screen when shared.

[Step to Procedure]

  1. start a call from the web (Google Chrome)
  2. start a call from the iOS App
  3. The call will start on the web (Google Chrome) and on the iOS App.
  • The iOS App will know that you have joined the call with ZoomVideoSDKDelegate.onSessionJoin.
    4.After the call is established, “screen sharing” starts on the Web (Google Chrome) side.
    5.On the iOS App, onUserShareStatusChanged() notifies that screen sharing has started on the Web (Google Chrome) side.

[program code]

In Delegate “onUserShareStatusChanged()” subscribe the UIView to user.getShareCanvas(), but nothing is actually displayed on the View

Web (Google Chrome) has changed to a shared screen


func onUserShareStatusChanged(_ helper: ZoomVideoSDKShareHelper?, user: ZoomVideoSDKUser?, status: ZoomVideoSDKReceiveSharingStatus) {

    let userShareCanvas = user?.getShareCanvas()

    switch status {
    case .start:
        userShareCanvas?.subscribe(with: self.screenSharedView, andAspectMode: .panAndScan)
    case .stop:
        userShareCanvas?.unSubscribe(with: self.screenSharedView)
    default:
        break
    }
}

@jun.sugai,

Thank you for all the details. Can you share a screenshot of how the video is currently rendering when screensharing ? This helps us diagnose what may be happening.

@donte.zoom

Thank you for reply!
I prepared a ScreenShot but could not paste it here.
It will result in an error containing media content.

Please let me know if you have any good improvement methods.

thanks

1 Like

Thanks for the response, @jun.sugai ! Please see my responses and follow-up questions below:

Can you share more details on why you bypass steps 1 to 7 of the developer guide and implemented from step 8 ?

The Apple video frameworks that were excluded are used to enhance the screen sharing experience. To begin troubleshooting, I suggest testing whether the video renders correctly using the Video SDK iOS Sample App. Please give it a try and inform us of the outcome. I think it’s best that you use the refer to the Sample app during your implementation because it seems that the observed behavior is limited to your application.

It seems like you are receiving the event but not the video feed. Could you please provide us with the crash logs or screenshots? Additionally, when you use version 1.7.0, do you see any console logs when you screen share? Have you added any logging to identify any noticeable differences between the versions? Are all the functionalities working as expected? Have you thoroughly reviewed the code responsible for handling the screen share functionality? Also, if you encounter difficulties uploading a screenshot, as an alternative you can utilize an online tool to upload the image and share the link in the forum instead.

[quote=“Donte, post:4, topic:87160, full:true, username:donte.zoom”]

Thanks for the response, @donte.zoom
Thank you for your kind attention to detail.

I believe Steps 1 to 6 are the steps required to 'Show Screen-Sharing’
Therefore, I don’t think they are necessary steps or frameworks for "Displaying Screen-Sharing”.

In order to avoid unnecessary libraries and complex builds, can you tell us why steps 1 to 7 are necessary for 'displaying the shared screen’?

We have introduced the following libraries into the project as advised and tested the behaviour, but the results did not change.
The Shared Video stream did not render anything.

sorry, but with version 1.7.0 or even newer versions of the SDK, the application does not crash.
It just doesn’t render to the View.
Logs can be shared when nothing is shown

In the log when the connection partner initiates screen sharing.
After this, no other logs were output during screen sharing.

onUserShareStatusChanged Start (view: <UIView: 0x11b50af30; frame = (0 0; 393 393); autoresize = W+H; layer = <CALayer: 0x600002f3a8a0>>)

Log when screen sharing is terminated.

onUserShareStatusChanged Stop (view: <UIView: 0x11b50af30; frame = (0 0; 393 393); autoresize = W+H; layer = <CALayer: 0x600002f3a8a0>>)

The screenshot shows the state of iOS when screen sharing is initiated.
The grey frame shows the view of the screen share.

ViewoSDK 1.7.0 or 1.7.2

VideoSDK 1.6.4 does screen sharing

Are there any other logs required for analysis? We will respond!

ping.

Any news on this?

thank you
sugai

Hi @jun.sugai

I am also trying to reproduce the reported issue here since today, but currently unable to, even after removing all mentioned frameworks related to ‘start’ sharing.
May I ask you a favor to change the parameter of the subscribeWithView as follows?

userShareCanvas?.subscribe(with: self.screenSharedView)

or, set like

userShareCanvas?.subscribe(with: self.screenSharedView, andAspectMode: .original)

as referring to this;
https://marketplacefront.zoom.us/sdk/custom/ios/_zoom_video_s_d_k_constants_8h.html#ac04e2914740fd97a7a82aebe3c155f65

And also would you mind considering to change target render view if applicable, such as the view for counter participant’s view, to test if any change might happen?

Sincerely,
Sugi

Hi @michitaka.sugi

Thanks for the advice.
We will try it as soon as possible and share the results with you.