{"id":3971,"date":"2021-10-27T19:29:19","date_gmt":"2021-10-27T11:29:19","guid":{"rendered":"https:\/\/www.enablex.io\/developer\/?page_id=3971"},"modified":"2025-04-04T20:14:10","modified_gmt":"2025-04-04T12:14:10","slug":"ios-share-share","status":"publish","type":"page","link":"https:\/\/doc.smartflomeet.ttns.in\/developer\/video\/solutions\/ios-share-share\/","title":{"rendered":"iOS Screen Share"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote\"><p>Screen Share feature is an important feature with a real-time communication platform. For the user to have a continued broadcast screen, the user needs to broadcast an extension in his Application as the App goes in the background.<\/p><\/blockquote>\n\n\n\n<p><em>You must have iOS 12+ to make screen share work in iOS.<\/em><\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 id=\"block-dfb72508-1681-406c-a71a-fa550b58dee2\">Table of Contents<\/h4>\n\n\n\n<ul id=\"block-89c62581-4f58-467a-94cb-6763ba76dee0\"><li><a href=\"#share-screen\">Live Broadcast using ReplayKit Library<\/a><ul><li><a href=\"#add-broadcast-extension\">Add the Broadcast Extension<\/a><\/li><li><a href=\"#open-broadcast-extension\">Open the Broadcast through RPSystemBroadcastPickerView<\/a><\/li><li><a href=\"#broadcast-device-screen\">Broadcast the Device Screen to Video Server<\/a><\/li><li><a href=\"#sample-handler\">Connect to the Broadcast Extension<\/a><\/li><\/ul><\/li><li><a href=\"#start-screen-share\">Start Screen Share<\/a><ul><li><a href=\"#send-video-buffer\">Send the Video Buffer Frame to Video Room<\/a><\/li><li><a href=\"#compress-sample-buffer\">Compress the Sample Buffer Frame<\/a><\/li><\/ul><\/li><li><a href=\"#stop-screen-share\">Stop Screen Share<\/a><ul><li><a href=\"#disconnect-the-room\">Disconnect the Room<\/a><\/li><\/ul><\/li><li><a href=\"#exit-screen-share\">Exit Screen Share<\/a><\/li><\/ul>\n\n\n\n<a name=\"share-screen\"><\/a>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2>Live Broadcast using ReplayKit Library<\/h2>\n\n\n\n<p>Using the ReplayKit library, users can build app extensions for live broadcasting.<\/p>\n\n\n\n<p><strong>Class<\/strong>: <code>RPSystemBroadcastPickerView<\/code><\/p>\n\n\n\n<a name=\"add-broadcast-extension\"><\/a>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3>Add the Broadcast Extension<\/h3>\n\n\n\n<ul><li>Go to Project &gt; File &gt; Target &gt; Broadcast Upload Extension&nbsp;&nbsp;&nbsp;<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" width=\"1024\" height=\"601\" src=\"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-content\/uploads\/2025\/04\/Add-the-broadcast-extension-1024x601-1.jpg\" alt=\"\" class=\"wp-image-7301\" srcset=\"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-content\/uploads\/2025\/04\/Add-the-broadcast-extension-1024x601-1.jpg 1024w, https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-content\/uploads\/2025\/04\/Add-the-broadcast-extension-1024x601-1-300x176.jpg 300w, https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-content\/uploads\/2025\/04\/Add-the-broadcast-extension-1024x601-1-768x451.jpg 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul><li>Set the bundle ID for Broadcast target Exm \u2013&nbsp;<code>com.companyName.Appname.Broadcast.extension<\/code>&nbsp;<\/li><\/ul>\n\n\n\n<p>After adding the broadcast extension, make sure that you have added the correct bundle id for your broadcast extension and your App.<\/p>\n\n\n\n<a name=\"open-broadcast-extension\"><\/a>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3>Open the Broadcast Extension through RPSystemBroadcastPickerView <\/h3>\n\n\n\n<p>Add the below code and run the Application. The broadcast will be open and you will start receiving the sample buffer (buffer frame of your image).<\/p>\n\n\n\n<pre id=\"block-aa6355af-083d-456e-9a3e-62d9ee6e0c8c\" class=\"wp-block-preformatted\">RPSystemBroadcastPickerView *pickerView = [[RPSystemBroadcastPickerView alloc]initWithFrame:CGRectMake(0, 0, 50, 50)];\npickerView.translatesAutoresizingMaskIntoConstraints = false;\npickerView.autoresizingMask = (UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleRightMargin);\nNSURL *url = [[NSBundle mainBundle] URLForResource:@\"BroadCastExtension\" withExtension:@\"Appex\" subdirectory:@\"PlugIns\"];\n if(url != nil){\n       NSBundle *bundle = [NSBundle bundleWithURL:url];\n        if(bundle != nil){\n   pickerView.preferredExtension= bundle.bundleIdentifier;\n       }\n  }\n pickerView.hidden = true;\n pickerView.showsMicrophoneButton = false;\n SEL buttonPress = NSSelectorFromString(@\"buttonPressed:\");\n if ([pickerView respondsToSelector:buttonPress]){\n         [pickerView performSelector:buttonPress withObject:nil];\n }\n[self.view addSubview:pickerView];\n[self.view bringSubviewToFront:pickerView];\npickerView.center = self.view.center;\n[self.extensionContext loadBroadcastingApplicationInfoWithCompletion:^(NSString* _Nonnull bundleID,NSString *_Nonnull displayName, UIImage *_Nullable AppIcon){\n            if(AppIcon != nil){\n                \n            }\n        }];<\/pre>\n\n\n\n<p>You receive sample buffer in the broadcast class <code>Sample Handler<\/code> through a delegate method.<\/p>\n\n\n\n<p><strong>Class<\/strong>: <code>Sample Handler<\/code><\/p>\n\n\n\n<p>Delegate Method: <code>- (void)processSampleBuffer:(CMSampleBufferRef)sampleBuffer withType:(RPSampleBufferType)sampleBufferType; get buffer frame<\/code><\/p>\n\n\n\n<p>Other delegated methods are listed below:<\/p>\n\n\n\n<ul><li><code>- (void)broadcastFinished<\/code> &#8211; If the broadcast has stopped\/finished<\/li><li><code>- (void)broadcastPaused<\/code> &#8211; If the broadcast has paused<\/li><li><code>- (void)broadcastResumed<\/code> &#8211; To resume the broadcast<\/li><\/ul>\n\n\n\n<a name=\"broadcast-device-screen\"><\/a>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3>Broadcast the Device Screen to Video server<\/h3>\n\n\n\n<p>Platform iOS SDK functions with the broadcast extension to broadcast your device screen and it publishes over the Video server.<\/p>\n\n\n\n<p>Add App group capabilities to the App and the broadcast extension. It enables the exchange of data from the App to the extension and vice versa.<\/p>\n\n\n\n<ul><li>Add app group to your application.<ul><li>Go to Testing &gt; TARGETS (select your application) &nbsp;&gt; Capability &gt; App Groups<\/li><\/ul><\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" width=\"1024\" height=\"603\" src=\"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-content\/uploads\/2025\/04\/ios-screen-share-2-1024x603-1.png\" alt=\"\" class=\"wp-image-7303\" srcset=\"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-content\/uploads\/2025\/04\/ios-screen-share-2-1024x603-1.png 1024w, https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-content\/uploads\/2025\/04\/ios-screen-share-2-1024x603-1-300x177.png 300w, https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-content\/uploads\/2025\/04\/ios-screen-share-2-1024x603-1-768x452.png 768w, https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-content\/uploads\/2025\/04\/ios-screen-share-2-1024x603-1-677x400.png 677w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul><li>Add app group to your broadcast extension.<ul><li>Go to Testing &gt; TARGETS (select your broadcast) &gt; Capability &gt; App Groups<\/li><\/ul><\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" width=\"1024\" height=\"601\" src=\"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-content\/uploads\/2025\/04\/iios-screen-share-3-1024x601-1.png\" alt=\"\" class=\"wp-image-7304\" srcset=\"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-content\/uploads\/2025\/04\/iios-screen-share-3-1024x601-1.png 1024w, https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-content\/uploads\/2025\/04\/iios-screen-share-3-1024x601-1-300x176.png 300w, https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-content\/uploads\/2025\/04\/iios-screen-share-3-1024x601-1-768x451.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container\">\n<ul><li>Join Video Conference through your application, store your <code>roomID <\/code>through <code>NSUserDefaults <\/code>or any other storage that can help you to get the same <code>roomID <\/code>in the broadcast extension as well.<\/li><\/ul>\n<\/div><\/div>\n\n\n\n<pre id=\"block-908f0d10-b6fd-4ebc-a6df-cc0a9a3f690c\" class=\"wp-block-preformatted\">NSUserDefaults *userDaf = [[NSUserDefaults alloc]initWithSuiteName:@\"group.com.enx.Videocall\"];\n        [userDaf setObject:[@\"your roomID through which you have joined Video Room\" objectForKey:@\"RoomId\"] forKey:@\"RoomId\"];\n[userDaf synchronize];\n<\/pre>\n\n\n\n<ul><li>Get self <code>clientID <\/code>and store with <code>NSUserDefaults <\/code>after successfully joining the VideoRoom.<\/li><\/ul>\n\n\n\n<pre id=\"block-d36af967-40f5-4c52-8b1c-4c8415ea6b60\" class=\"wp-block-preformatted\">NSUserDefaults *userDefault = [[NSUserDefaults alloc]initWithSuiteName:@\"group.com.enx.Videocall\"];\n[userDefault setObject:_remoteRoom.clientId forKey:@\"ClientID\"];\n [userDefault synchronize];\n\ufeff<\/pre>\n\n\n\n<ul><li>Pass the app group key to Video SDK after storing the <code>clientID <\/code>in <code>userDefault<\/code>.<\/li><\/ul>\n\n\n\n<pre id=\"block-8cf9603b-7139-4f5e-8c64-ed5abb58cc96\" class=\"wp-block-preformatted\">[[EnxUtilityManager shareInstance] setAppGroupsName:@\"group.com.enx.Videocall\" withUserKey:@\"ClientID\"];<\/pre>\n\n\n\n<ul><li>Start the broadcast through <code>RPSystemBroadcastPickerView <\/code>after sharing the <code>roomID <\/code>and the <code>ClientID<\/code>.<\/li><li>Use the class <code>SampleHandler <\/code>to broadcast extension in <code>RPSystemBroadcastPickerView<\/code>. This class notifies all events to the user. <ul><li>Next, add one class that will help you to get an update from <strong><code>SampleHandler <\/code><\/strong>and pass it to the Video iOS SDK.<\/li><li>Important:-The user needs to join the Video room with the help of the same <code>roomID <\/code>shared through the main application.<\/li><\/ul><\/li><\/ul>\n\n\n\n<a name=\"sample-handler\"><\/a>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3>Connect to the Broadcast Extension<\/h3>\n\n\n\n<p><code>SampleHandler <\/code>will initiate the helper class (the class that you have created inside the broadcast extension). On successful connection to broadcast extension, you will receive a delegated method in <strong><code>SampleHandler<\/code>.<\/strong><\/p>\n\n\n\n<p><code>- (void)broadcastStartedWithSetupInfo:(NSDictionary&lt;NSString *,NSObject *&gt; *)setupInfo<\/code><\/p>\n\n\n\n<p>After getting this delegated method, connect to the Video Room with the same <code>roomID <\/code>and pass through the main application.<\/p>\n\n\n\n<ul><li>Get the same <code>roomID <\/code>stored in <code>USerDefault<\/code><\/li><\/ul>\n\n\n\n<pre id=\"block-38f3cc3c-62c9-4a0f-95f8-17cc7a66f54b\" class=\"wp-block-preformatted\">NSUserDefaults *userDefault = [[NSUserDefaults alloc] initWithSuiteName:@\"group.com.enx.Videocall\"];\nNSString *roomId = [userDefault objectForKey:@\"RoomId\"];\n<\/pre>\n\n\n\n<ul><li>Pass the stored app group name to Video SDK at the same time<\/li><\/ul>\n\n\n\n<pre id=\"block-58eb2f33-934f-4196-83ce-a9566e969739\" class=\"wp-block-preformatted\">[[EnxUtilityManager shareInstance] setAppGroupsName:@\"group.com.enx.Videocall\" withUserKey:@\"ClientID\"];\ufeff<\/pre>\n\n\n\n<ul><li>Create a Platform token and connect with room after getting the <code>roomID<\/code><\/li><\/ul>\n\n\n\n<pre id=\"block-72d63fff-e529-4eba-87bb-2ff88dcf7015\" class=\"wp-block-preformatted\">EnxRoom *remoteRooml = [[EnxRoom alloc]init];\n[remoteRooml connectWithScreenshare:respinseDict[@\"token\"] withScreenDelegate:self];\n<\/pre>\n\n\n\n<p>User receives a callback from Platform iOS SDK on successful room connection as below:<\/p>\n\n\n\n<p><code>-(void)broadCastConnected;<\/code><\/p>\n\n\n\n<p>If the room connection gets failed due to any cause, the user will receive a failure callback through Portal iOS SDK as below:<\/p>\n\n\n\n<p><code>-(void)failedToConnectWithBroadCast:(NSArray *)reason<\/code><\/p>\n\n\n\n<a name=\"start-screen-share\"><\/a>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3>Start Screen Share<\/h3>\n\n\n\n<p>The&nbsp;<code>EnxRoom.startScreenShare()<\/code>&nbsp;method is used to create a Screen-Sharing Stream @ 6fps to publish in the Room.&nbsp;<\/p>\n\n\n\n<p>Portal SDK organizes the screen share and publishes it over the portal Media channel. Once screen share is published successfully, the broadcast extension class receives a callback method and the application receives an acknowledgment method for starting the screen share.<\/p>\n\n\n\n<p><strong>Class<\/strong>: <code>EnxRoom<\/code><\/p>\n\n\n\n<p><strong>Methods<\/strong>: <\/p>\n\n\n\n<ul><li><code>[enxRoom startScreenShare]; <\/code><\/li><li><code>-(void)didStartBroadCast:(NSArray *)data<\/code> &#8211; After publishing the Shared-Screen Stream, the broadcast extension class receives this callback method.<\/li><li><code>-(void)room:(EnxRoom *)room didStartScreenShareACK:(NSArray *)Data<\/code> &#8211; For starting the screen share, the application receives this acknowledgment method.<\/li><\/ul>\n\n\n\n<a name=\"send-video-buffer\"><\/a>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4>Send the Video Buffer Frame to Video Room<\/h4>\n\n\n\n<p>Once you are connected to the room and have started screen share, start sending video buffer frame to Video Room.<\/p>\n\n\n\n<p><code>-(void)sendVideoBuffer:(CVPixelBufferRef _Nonnull)sampleBuffer withTimeStamp:(int64_t)timeStampNs;<\/code><\/p>\n\n\n\n<p>where <code>SampleBuffer <\/code>is the frame of the screen and <code>TimeStampNsc <\/code>is in a nanosecond.<\/p>\n\n\n\n<p>Let us consider that the user receives the \u201c<code>CMSampleBufferRef<\/code>\u201d from the broadcast.<\/p>\n\n\n\n<ul><li>Convert \u201c<code>CMSampleBufferRef<\/code>\u201d with \u201c<code>CVPixelBufferRef<\/code>\u201d  <ul><li><strong><code>CVPixelBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(bufferImage);<\/code><\/strong><\/li><\/ul><\/li><\/ul>\n\n\n\n<ul><li>Create a time stamp in \u201cint64_t\u201d format<ul><li><code>int64_t timeStampNs = CMTimeGetSeconds(CMSampleBufferGetPresentationTimeStamp(bufferImage)) *1000000000;<\/code><\/li><\/ul><\/li><\/ul>\n\n\n\n<pre id=\"block-0561908f-41ef-4a56-8698-c3bd19531942\" class=\"wp-block-preformatted\">[enxRoom sendVideoBuffer: pixelBuffer withTimeStamp\n:timeStampNs];\n<\/pre>\n\n\n\n<a name=\"compress-sample-buffer\"><\/a>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4>Compress the Sample Buffer Frame<\/h4>\n\n\n\n<p>The user receives the buffer image once the broadcast extension has started successfully through the broadcast callback method.<\/p>\n\n\n\n<p>Note: The broadcast extension has a limitation of max 50M memory at run time. In case, if this memory exceeds, in that case, the broadcast extension will terminate giving a memory warning.<\/p>\n\n\n\n<p>The user needs to compress the sample buffer frame (the buffer frame received through the broadcast extension) either by using vImage crop or any other crop methodology.<\/p>\n\n\n\n<p><code>- (void)processSampleBuffer:(CMSampleBufferRef)sampleBuffer withType:(RPSampleBufferType)sampleBufferType;<\/code><\/p>\n\n\n\n<a name=\"stop-screen-share\"><\/a>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3>Stop Screen Share<\/h3>\n\n\n\n<p>The <code>EnxRoom.stopScreenShare()<\/code>&nbsp;method is used to stop the ongoing screen sharing. <\/p>\n\n\n\n<p>Once the screen share is unpublished, the broadcast extension class receives a callback method and the application receives an acknowledgment method for starting the screen share.<\/p>\n\n\n\n<p><strong>Class:<\/strong> <code>EnxRoom<\/code><\/p>\n\n\n\n<p><strong>Methods:<\/strong> <\/p>\n\n\n\n<ul><li><code>[enxRoom stopScreenShare];<\/code><\/li><li><code>-(void)didStoppedBroadCast:(NSArray *)data<\/code><strong> <\/strong>&#8211; After unpublishing the shared screen stream, the broadcast extension class receives this callback method.<\/li><li><code>-(void)room:(EnxRoom *)room didStartScreenShareACK:(NSArray *)Data<\/code> &#8211; For stopping the screen share, the application receives this acknowledgment method.<\/li><\/ul>\n\n\n\n<a name=\"disconnect-the-room\"><\/a>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4>Disconnect the Room<\/h4>\n\n\n\n<p>The user needs to disconnect the room connected through the broadcast extension for the screen share after the screen share has stopped.<\/p>\n\n\n\n<p><strong>Class:<\/strong> <code>EnxRoom<\/code><\/p>\n\n\n\n<p><strong>Methods:<\/strong> <\/p>\n\n\n\n<ul><li><code>[enxRoom disconnect];<\/code><\/li><li><code>-(void)broadCastDisconnected;<\/code> &#8211; After the broadcast room is disconnected, the broad extension receives a room disconnected callback<\/li><li><code>-(void)disconnectedByOwner;<\/code> &#8211; During ongoing screen share if parent use got disconnected due to any reason, the broadcast extension receives a callback from the iOS SDK using this method.<\/li><\/ul>\n\n\n\n<p><strong>Events:<\/strong> <\/p>\n\n\n\n<ul><li><code>[self finishBroadcastWithError:nil];<\/code> &#8211; After receiving this callback event, the user needs to stop the broadcast.<\/li><\/ul>\n\n\n\n<a name=\"exit-screen-share\"><\/a>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3>Exit Screen Share<\/h3>\n\n\n\n<p>The <code>EnxRoom.exitScreenShare()<\/code>&nbsp;method is used by the parents to stop the ongoing screen sharing.<\/p>\n\n\n\n<p><strong>Class:<\/strong> <code>EnxRoom<\/code><\/p>\n\n\n\n<p><strong>Method:<\/strong> <code>-(void)exitScreenShare;<\/code> <\/p>\n\n\n\n<p><strong>Delegate Methods:<\/strong><\/p>\n\n\n\n<ul><li><code>-(void)room:(EnxRoom *_Nullable)room didExitScreenShareACK:(NSArray *_Nullable)Data;<\/code> &#8211; Acknowledgment callback for the parent client.<\/li><li><code>(void)didRequestedExitRoom:(NSArray *_Nullable)Data;<\/code> &#8211; Notification received by the child client (screen share client). As the screen share client receives this callback, they initiate to stop the broadcast and disconnect from the room.<\/li><\/ul>\n\n\n\n<p><strong>Error Codes \/ Exceptions<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Code<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>5137<\/td><td>Screen Share is not running in conference<\/td><\/tr><\/tbody><\/table><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Screen Share feature is an important feature with a real-time communication platform. For the user to have a continued broadcast screen, the user needs to broadcast an extension in his Application as the App goes in the background. You must have iOS 12+ to make screen share work in iOS. Table of Contents Live Broadcast using ReplayKit Library Add the Broadcast Extension Open the Broadcast through RPSystemBroadcastPickerView Broadcast the Device&hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"parent":116,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"ub_ctt_via":""},"featured_image_src":null,"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"featured":false,"featured-large":false},"uagb_author_info":{"display_name":"vcxdevwpadmin","author_link":"https:\/\/doc.smartflomeet.ttns.in\/developer\/author\/vcxdevwpadmin\/"},"uagb_comment_info":0,"uagb_excerpt":"Screen Share feature is an important feature with a real-time communication platform. For the user to have a continued broadcast screen, the user needs to broadcast an extension in his Application as the App goes in the background. You must have iOS 12+ to make screen share work in iOS. Table of Contents Live Broadcast&hellip;","_links":{"self":[{"href":"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-json\/wp\/v2\/pages\/3971"}],"collection":[{"href":"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-json\/wp\/v2\/comments?post=3971"}],"version-history":[{"count":0,"href":"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-json\/wp\/v2\/pages\/3971\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-json\/wp\/v2\/pages\/116"}],"wp:attachment":[{"href":"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-json\/wp\/v2\/media?parent=3971"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}