Azure communication service iOS screensharing

Payal Tiwari 0 Reputation points
2025-03-07T10:26:53.9+00:00

Is screen sharing possible in iOS using Azure Communication Services (ACS) Join Room functionality?

I am working on implementing screen sharing in an iOS app using Azure Communication Services (ACS) Join Room functionality.

I want to know if screen sharing is supported and how it can be achieved. Since iOS does not allow direct access to screen content, I am considering the following approach:

  1. Use a Broadcast Upload Extension to capture screen frames.
  2. Transfer frames to the main app using App Groups or Darwin Notifications.
  3. Convert CVPixelBuffer to ACSOutgoingVideoStream and send it to ACS Local Video Stream.

Does ACS support this method for screen sharing in iOS? Is there any recommended best practice from Microsoft for achieving this?

Any guidance or sample code would be greatly appreciated!

Azure Communication Services
Azure Communication Services
An Azure communication platform for deploying applications across devices and platforms.
1,032 questions
0 comments No comments
{count} votes

1 answer

Sort by: Most helpful
  1. Chiugo Okpala 790 Reputation points MVP
    2025-03-08T17:47:05.4433333+00:00

    @Payal Tiwari

    Welcome to the Microsoft Q&A community.

    Azure Communication Services (ACS) does support screen sharing on iOS, but it requires some specific steps and considerations. Your approach using a Broadcast Upload Extension to capture screen frames and transferring them to the main app is a valid method. Here are some key points and best practices to consider:

    1. Broadcast Upload Extension: This is the recommended way to capture screen content on iOS. You can use the RPBroadcastSampleHandler to capture screen frames and then transfer them to your main app using App Groups or Darwin Notifications.
    2. Transferring Frames: Using App Groups or Darwin Notifications to transfer frames from the Broadcast Upload Extension to the main app is a common practice. Ensure that you handle the data transfer efficiently to minimize latency.
    3. Converting CVPixelBuffer: You can convert the captured CVPixelBuffer to an ACSOutgoingVideoStream and send it to the ACS Local Video Stream. This involves creating a custom video stream and managing the video frames appropriately.
    4. ACS SDK: The ACS Calling SDK provides APIs for managing video streams, including screen sharing. You can use the LocalVideoStream class to handle the video stream and integrate it with your ACS call. For detailed implementation and best practices, you can refer to the Azure Communication Services Calling SDK documentation and the best practices guide. I hope these helps. Let me know if you have any further questions or need additional assistance. Also if these answers your query, do click the "Upvote" and click "Accept the answer" of which might be beneficial to other community members reading this thread. User's image
    0 comments No comments

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.