{"id":6065,"date":"2022-02-25T21:56:18","date_gmt":"2022-02-25T13:56:18","guid":{"rendered":"https:\/\/www.enablex.io\/developer\/?page_id=6065"},"modified":"2025-04-09T16:56:29","modified_gmt":"2025-04-09T08:56:29","slug":"ios-video-ui-kit","status":"publish","type":"page","link":"https:\/\/doc.smartflomeet.ttns.in\/developer\/video\/solutions\/video-ui-kit\/ios-video-ui-kit\/","title":{"rendered":"iOS Video UIKit"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote\"><p>iOS Video UIKit helps you develop a Video UI quickly without having to read through vast iOS SDK Documentation and handling all complexities that comes along the development process. It provides easy way to get started with a Video UI for your native App.<\/p><\/blockquote>\n\n\n\n<p class=\"has-text-align-center\"><\/p><div class=\"wp-block-button aligncenter\"><a class=\"wp-block-button__link no-border-radius\" href=\"\/developer\/wp-content\/uploads\/ui-kit-sdk\/ios\/Enx_UIKit_iOS.xcframework_2.1.8.zip\">Download iOS UIKit v2.1.8<\/a><br>Released: March 20, 2025<\/div><p><\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4>Table of Contents<\/h4>\n\n\n\n<ul><li><a href=\"#overview\">Overview<\/a><\/li><li><a href=\"#whats-new\">What&#8217;s New?<\/a><ul><li>v2.1.8 &#8211; March 20, 2025<\/li><li>v2.1.3<\/li><li><a href=\"#v1-1-1\">v2.1.1<\/a><\/li><li><a href=\"#whats-new-v1-2-2\">v1.2.2<\/a><\/li><li><a href=\"#whats-new-v1-2\">v1.2<\/a>  <\/li><\/ul><\/li><li><a href=\"#how-to-use\">How to use<\/a><\/li><li><a href=\"#implementation\">Implementation<\/a><\/li><li><a href=\"#ui-customization\">UI Customization<\/a><\/li><li><a href=\"#features\">Features<\/a><ul><li><a href=\"#screen-share\">Screen Share<\/a><\/li><li><a href=\"#participant-list\">Participant List<\/a><\/li><\/ul><\/li><\/ul>\n\n\n\n<a name=\"overview\"><\/a>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2>Overview<\/h2>\n\n\n\n<p>iOS Video UIKit has been introduced to streamline the integration of video functionality into your iOS native app. This framework offers extensive customization options, making it an excellent choice for developing video applications on iOS platforms such as iPhone and iPad.<\/p>\n\n\n\n<p>You code less, only 3 lines of Code does all the magic of getting a video communication done. Thus, using UIKit helps you get a seamless Video UI with all Device Support in almost 99% reduced effort and time.<\/p>\n\n\n\n<p>UIKit freamwork is a 100% native layout and devices specific layout. It has auto adjustment of UI based on device and its orientation.<\/p>\n\n\n\n<a name=\"whats-new\"><\/a>\n\n\n\n<a name=\"whats-new-v1-2-2\"><\/a>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2>What&#8217;s new?<\/h2>\n\n\n\n<p>This section provides information about new features and improvements to existing features shipped in the iOS UI Kit releases.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<a name=\"whats-new-v2-1-8\"><\/a>\n\n\n\n<h3>What&#8217;s New in iOS UI Kit v2.1.8?<\/h3>\n\n\n\n<p>The UI Kit framework has been moved from .freamwork to .xcfreamwork, with added support dSYMs file.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<a name=\"whats-new-v2-1-3\"><\/a>\n\n\n\n<h3>What&#8217;s New in iOS UI Kit v2.1.3?<\/h3>\n\n\n\n<p>iOS UI Kit v2.1.3 is released with a bouquette of new features:<\/p>\n\n\n\n<p><strong>Collaboration &amp; Engagement<\/strong><\/p>\n\n\n\n<ul><li>Annotation<\/li><li>Screen Share<\/li><li>Room Setting: Switch Room, Screen Share Control, Canvas Control<\/li><li>Polling<\/li><li>Q&amp;A<\/li><li>Switch Role<\/li><\/ul>\n\n\n\n<p><strong>Webinar Feature<\/strong><\/p>\n\n\n\n<ul><li>Request Floor Access<\/li><\/ul>\n\n\n\n<p><strong>Reach<\/strong><\/p>\n\n\n\n<ul><li>Live Streaming<\/li><\/ul>\n\n\n\n<p><strong>Utilities<\/strong><\/p>\n\n\n\n<ul><li>Switch Layout between Video Grid &amp; List View<\/li><li>Audio Only UI<\/li><\/ul>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<a name=\"whats-new-v2-1-1\"><\/a>\n\n\n\n<h3>What&#8217;s New in iOS UI Kit v2.1.1?<\/h3>\n\n\n\n<p>The iOS UI Kit v2.1.1 introduces additional configuration option like Joining Button name, Default Camera to initiate, Showing Camera Preview before joining, joining with Camera or Microphone muted, joining with RTMP Streaming endpoints etc.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<a name=\"whats-new-v1-2-2\"><\/a>\n\n\n\n<h3>What&#8217;s New in iOS UIKit v1.2.2?<\/h3>\n\n\n\n<p>iOS UIKit v1.2.2 comes with a confirmation screen before joining the room. In this screen, user chooses if he wants to go ahead with a Video Call or with a Audio-Only call.  For Video Call, use chooses if he wishes to enter with Microphone or Camera muted.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<a name=\"whats-new-v1-2\"><\/a>\n\n\n\n<h3> What&#8217;s new with iOS UIKit v1.2? <\/h3>\n\n\n\n<ul><li><strong>Works with Low Code<\/strong>: iOS UI Kit now works with your Low Code settings configured using Visual Builder through Portal. <code>EnxVideoViewClass()<\/code> is modified to accept extra key for Low Code URL. <\/li><li><strong>File Share<\/strong>: Users can now share files among everyone or private with other specific users in-session.<\/li><li><strong>Annotation<\/strong>: User can now annotate on stream and remote users can view annotated streams live.<\/li><li><strong>Participant List<\/strong>: Configuration options for Participant List. <\/li><\/ul>\n\n\n\n<a name=\"how-to-use\"><\/a>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2>How to use iOS Video UIKit?<\/h2>\n\n\n\n<h3>Manual Installation Process<\/h3>\n\n\n\n<p>The <code>SFmeet_UIKit_iOS<\/code> Framework is dependent on <a href=\"\/developer\/video-api\/client-api\/ios-toolkit\/\" data-type=\"URL\">iOS SDK<\/a> and socket library. Therefore, if you are adding <code>SFmeet_UIKit_iOS<\/code> Framework manually, download the iOS UIKit using the download option and add <code>project->target->framework\/library.<\/code> You also need to add <a href=\"\/developer\/video-api\/client-api\/ios-toolkit\/\">iOS SDK<\/a> and socket.io through POD. <strong>The UIKit iOS SDK is supported in iOS 13+<\/strong>.<\/p>\n\n\n\n<p>Follow these steps:<\/p>\n\n\n\n<ul><li><strong>Step#1: <\/strong> Open terminal<\/li><li><strong>Step#2:<\/strong>  Go to your project directory<\/li><li><strong>Step #3: <\/strong> Call \u201c<code>pod init<\/code>\u201d<\/li><li><strong>Step #4: <\/strong> Once your podfile is created,  add the Video iOS SDK and socket.io<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>pod '<\/code>SFmeetRTCiOS<code>'\npod 'Socket.IO-Client-Swift', '~> 16.1.1'<\/code><\/pre>\n\n\n\n<ul><li><strong>Step#5:<\/strong> Install Pod &#8211; &#8220;<code>pod install<\/code>&#8220;<\/li><li><strong>Step#6:<\/strong> Open your project and go to <em>Target -> Framework\/Library<\/em>. Add the <code>SFmeet_UIKit_iOS<\/code> here.<\/li><\/ul>\n\n\n\n<p>You are now done with manual installation process.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3>Setup through Pod<\/h3>\n\n\n\n<p>Follow these steps:<\/p>\n\n\n\n<ul><li><strong>Step#1: <\/strong> Open terminal<\/li><li><strong>Step#2:<\/strong>  Go to your project directory<\/li><li><strong>Step#3: <\/strong> Call \u201c<code>pod init<\/code>\u201d<\/li><li><strong>Step#4: <\/strong>Open <code>podfile <\/code>and add <code>SFmeet_UIKit_iOS\u00a0<\/code><\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\"><code> pod '<\/code>SFmeet_UIKit_iOS<code>'<\/code><\/pre>\n\n\n\n<ul><li><strong>Step#5:<\/strong> Install Pod &#8211; &#8220;<code>pod install<\/code>&#8220;. It will install all dependency itself.&nbsp;<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: While installing the iOS UIKit library through the pod, it is not required to add <a href=\"\/developer\/video-api\/client-api\/ios-toolkit\/\">iOS SDK<\/a> and socket.io frameworks separately.<\/p>\n\n\n\n<p>Once installation process is complete, move to implementation process.<\/p>\n\n\n\n<a name=\"implementation\"><\/a>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2>Implementation<\/h2>\n\n\n\n<h3>Prerequisite<\/h3>\n\n\n\n<p>To use the Enx_UIKit_iOS Framework user must have the following:<\/p>\n\n\n\n<ul><li><a href=\"\/developer\/video-api\/server-api\/rooms-route\/#create-token\">A valid Token<\/a> to join the <a href=\"\/developer\/video-api\/server-api\/rooms-route\/#create-room\">room<\/a>.<\/li><li>Camera Permission<\/li><li>Mic Permission<\/li><\/ul>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong>How to get Camera and mic permission in iOS<\/strong>?<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">private func getPrivacyAccess(){ \n\tlet vStatus = AVCaptureDevice.authorizationStatus(for: .video) \n\tif(vStatus == AVAuthorizationStatus.notDetermined){ \n\t\tAVCaptureDevice.requestAccess(for: .video, completionHandler: { (granted: Bool) in \n\t\t}) \n\t} \n\n        let aStatus = AVCaptureDevice.authorizationStatus(for: .audio) \n\tif(aStatus == AVAuthorizationStatus.notDetermined){ \n\t\tAVCaptureDevice.requestAccess(for: .audio, completionHandler: { (granted: Bool) in \n\t\t}) \n        } \n}<\/pre>\n\n\n\n<p>Add <code>NSCameraUsageDescription <\/code>and <code>NSMicrophoneUsageDescription <\/code>in your <code>app-&gt; info.plist<\/code><\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3> Code a little<\/h3>\n\n\n\n<ul><li><strong>Step#1: <\/strong>Go to your class and import the <code>SFmeet_UIKit_iOS<\/code><\/li><\/ul>\n\n\n\n<p><strong>Example: Swift<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">import Enx_UIKit_iOS \n<\/pre>\n\n\n\n<p><strong>Example: Objective-C<\/strong>   <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">@import Enx_UIKit_iOS; \n@class Enx_UIKit_iOS; \n@interface yourmainclass: UIViewController <\/pre>\n\n\n\n<p><strong>Step#2:&nbsp;<\/strong>Use the&nbsp;<code>UIKit class<\/code><\/p>\n\n\n\n<p> <strong>Example: Swift<\/strong> <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/Initiate the EnxVideoViewClass \nlet enxViewer = EnxVideoViewClass(\n\t\t\ttoken: \"A valid Room Token\", \n\t\t\tdelegate: self,\n\t\t\tembedUrl: \"Low-Code Embed URL. Optional to import Settings\"\n\t\t\t) \n\n\/\/Add it to your view \nview.addSubview(enxViewer) \n\n\/\/Set the frame \nenxViewer.frame = self.view.bounds \n\n\/\/Set the constraint to auto manage UI if orientation change \nenxViewer.autoresizingMask = [.flexibleWidth, .flexibleHeight]  <\/pre>\n\n\n\n<p> <strong>Example: Objective-C<\/strong>  -After import done, go to .m class&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/Initiate the EnxVideoViewClass \nEnxVideoViewClass *videoView = [[EnxVideoViewClass alloc] \n\tinitWithToken:@\"A aalid Room Token\"\n\tdelegate:self \n\tembedUrl:\"Low-Code Embed URL. Optional to import Settings\"]; \n\n\/\/Add it to your view \n[self.view addSubview:videoView]; \n\n\/\/Set the frame \nvideoView.frame = self.view.bounds; \n\n\/\/Set the constraint to auto manage UI if orientation change \nvideoView.autoresizingMask = (UIViewAutoresizingFlexibleWidth |UIViewAutoresizingFlexibleHeight); <\/pre>\n\n\n\n<p>Here you need to create an instance of <code>EnxVideoView <\/code>which is the subclass of <code>UIView<\/code>. You need to pass a valid Token and use Delegate to receive callback.<\/p>\n\n\n\n<ul><li><strong>Step#3:<\/strong> Handle Callbacks<\/li><\/ul>\n\n\n\n<p>There are 2 callbacks for you to clear instance or for any other UI\/UX implementation. They are:<\/p>\n\n\n\n<ul><li><em>For Disconnection<\/em>: You get notified when the user gets disconnected from the Video Room. The JSON you receive shows reason for disconnection.<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">func disconnect(response: [Any]?) <\/pre>\n\n\n\n<ul><li><em>For Connection Error<\/em>: You get notified if the user doesn&#8217;t get connected to the Video Room. The JSON you receive shows related error.<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">func connectError(reason: [Any]?) <\/pre>\n\n\n\n\n\n<a name=\"ui-customization\"><\/a>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2>UI Customization<\/h2>\n\n\n\n<h3>Customize Bottom Bar<\/h3>\n\n\n\n<p>You can add own buttons, customize view background color, resolution for Bottom Bar.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong>To update Bottom Bar View:<\/strong><\/p>\n\n\n\n<p><code>EnxSetting.shared.updateBottomOptionView(withColor:UIColor)<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">EnxSetting.shared.updateBottomOptionView(withColor: .red.withAlphaComponent(1.0))<\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong>To add button on Bottom Bar View:<\/strong><\/p>\n\n\n\n<p><code>EnxSetting.shared.configureBottomOptionList(withList: [button-list])<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ Define Audio-Mute Button\nlet audioBtn = UIButton(type: .custom) \naudioBtn.tag = BottomOptions.audio.rawValue \n\n\/\/ Define Video-Mute Button\nlet videoBtn = UIButton(type: .custom) \nvideoBtn.tag = BottomOptions.video.rawValue \n\n\/\/ Define Camera Switch Button\nlet cameraBtn = UIButton(type: .custom) \ncameraBtn.tag = BottomOptions.cameraSwitch.rawValue\n\n\/\/ Add Buttons\nEnxSetting.shared.configureBottomOptionList(withList: [audioBtn, videoBtn, cameraBtn]) <\/pre>\n\n\n\n<p><strong>Note: <\/strong><\/p>\n\n\n\n<ul><li>To add own custom button, you need not add pre-defined button-tags, but add targets for your own button. And, you handle their actions\/events yourself. UIKit will automatically generate action for the buttons which has pre-defined button-tags. Refer to the above code snippet.<\/li><li>You can define maximum of 7 buttons for Bottom Bar.<\/li><\/ul>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3>Customize Top Bar<\/h3>\n\n\n\n<p>You can add own buttons, customize view background color, resolution for Top Bar.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p> <strong>To update Top Bar View:<\/strong> <\/p>\n\n\n\n<p><code>EnxSetting.shared.updateTopOptionView(withColor: UIColor)<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">EnxSetting.shared.updateTopOptionView(withColor: .red.withAlphaComponent(1.0))<\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p> <strong><strong>To add button on Top Bar View:<\/strong> <\/strong><\/p>\n\n\n\n<p><code><code>EnxSetting.shared.configureTopOptionList(withList: [button-list])<\/code> <\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ Define Participants Button\nlet participant = UIButton(type: .custom) \nparticipant.tag = TopOptions.userList.rawValue \n\n\/\/ Define Menu Button\nlet menu = UIButton(type: .custom) \nmenu.tag = TopOptions.menu.rawValue \n\n\/\/ Add Buttons\nEnxSetting.shared.configureTopOptionList(withList: [participant, menu])<\/pre>\n\n\n\n<p><strong>Note: <\/strong><\/p>\n\n\n\n<ul><li>To add own custom button, you need not add pre-defined button-tags, but add targets for your own button. And, you handle their actions\/events yourself. UIKit will automatically generate action for pre-defined button-tags.<\/li><li>You can define maximum of 7 buttons for Top Bar.<\/li><\/ul>\n\n\n\n<a name=\"features\"><\/a>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2>Features<\/h2>\n\n\n\n<ul><li><strong>Works with Low-Code:<\/strong> A Low Code URL may be configured with UI Kit to import it&#8217;s settings as defined using VIsual Builder through Portal.  <\/li><li><strong>For Participants and Moderators<\/strong><ul><li>Mute Self-Audio<\/li><li>Mute Self-Video<\/li><li>Switch Camera<\/li><li>Switch Audio Device<\/li><li>Group and Private Chat<\/li><li>Participant List<\/li><li>Switch Layout<\/li><li>Disconnect Call<\/li><li>File Share: Share with all or privately to specific user. <\/li><\/ul><\/li><li><strong>For Moderators only<\/strong><ul><li>Record Session<\/li><li>Mute Room<\/li><li>Mute Participant-Audio<\/li><li>Mute Participant-Video<\/li><li>Drop Participant from room<\/li><\/ul><\/li><\/ul>\n\n\n\n<a name=\"screen-share\"><\/a>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2>Screen Share<\/h2>\n\n\n\n<p>This is to present device screen into Video Room and to receive and play on the other ends.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3>Start Screen Share<\/h3>\n\n\n\n<p><strong>Method: <\/strong><code>public init(screenShare token:String, withAppGroupName:String,<br>withUserKey:String, delegate:EnxScreenShareStateDelegate?<\/code><\/p>\n\n\n\n<p><strong>Parameters: <\/strong><\/p>\n\n\n\n<ul><li><code>screenShare <\/code>&#8211; Valid Token for Screen Share<\/li><li><code>withAppGroupName <\/code>&#8211; Application&#8217;s Group name<\/li><li><code>userKey <\/code>&#8211; Client ID<\/li><li><code>delegate <\/code>&#8211; Set delegate to get callback from Screen Share client<\/li><\/ul>\n\n\n\n<p> <strong>Example: Objective-C<\/strong>  <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[[EnxShareClass alloc] initWithScreenShare:\u201ctoken\u201d withAppGroupName:\"group.com.compantName.AppName\" \nwithUserKey:\"ClientID\" delegate:self]; <\/pre>\n\n\n\n<p> <strong>Example: Swift<\/strong>   <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">EnxShareClass(screenShare: \u201ctoken\u201d, \n\twithAppGroupName: \"group.com.compantName.AppName\", \n\twithUserKey: \"ClientID\",\n\tdelegate: self\n\t)<\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>After screen share gets started, process frame for share<\/p>\n\n\n\n<p>M<strong>ethod:<\/strong> <code>public func processFrame(buffer sampleBuffer:String, withTimeStamp timeStamp :Int64)<\/code><\/p>\n\n\n\n<p><strong>Parameters:<\/strong><\/p>\n\n\n\n<ul><li><code>buffer <\/code>&#8211; <\/li><li><code>withTimeStamp <\/code>&#8211; Integer. Timestamp.<\/li><\/ul>\n\n\n\n<p> <strong>Example: Objective-C<\/strong>  <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[enxShare processFrameWithBuffer: outPixelBuffer withTimeStamp: time]; <\/pre>\n\n\n\n<p> <strong>Example: Swift<\/strong>   <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">enxShare.processFrame(buffer: outPixelBuffer!, withTimeStamp: time)<\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong>Callbacks for Screen Share:<\/strong><\/p>\n\n\n\n<ul><li><code>broadCast(connected date : [Any]?)<\/code> &#8211; When broadcast gets connected.<\/li><li><code>failedToConnect(withBroadCast reason: [Any]?)<\/code> &#8211; When broadcast failed to connect<\/li><li><code>broadCastDisconnected()<\/code> &#8211; When broadcast gets disconnected<\/li><li><code>disconnectedByOwner()<\/code> &#8211; When broadcast owner gets disconnected<\/li><li><code>requestedTo(exitRoom : [Any]?)<\/code> &#8211; When Moderator requests to exit screen share<\/li><\/ul>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3>Set Screen Share Options<\/h3>\n\n\n\n<p>Use the following method to set preferred options for your screen share:<\/p>\n\n\n\n<p><strong>Method<\/strong>: <code>setOption(forScreenShare opt: [String : String])<\/code><\/p>\n\n\n\n<p><strong>Parameters:<\/strong><\/p>\n\n\n\n<ul><li><code>opt<\/code> &#8211; Optional Parameters for Screen Share .<\/li><\/ul>\n\n\n\n<p> <strong>Example: Objective-C<\/strong>  <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[[EnxSetting shared] setOptionForScreenShare:@{@\"layout\" :  @\"presenter\" }]; <\/pre>\n\n\n\n<p> <strong>Example: Swift<\/strong>   <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">EnxSetting.shared.setOption(forScreenShare: [\"layout\" : \"presenter\"]);<\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3>Get Screen Share Options<\/h3>\n\n\n\n<p>Use the following method to get configured options for your screen share:<\/p>\n\n\n\n<p><strong>Method<\/strong>: <code>getOptionForScreenShare()<\/code><\/p>\n\n\n\n<p> <strong>Example: Objective-C<\/strong>  <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">NSDictionary *dict = [[EnxSetting shared] getOptionForScreenShare]; <\/pre>\n\n\n\n<p> <strong>Example: Swift<\/strong>   <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">let option  = EnxSetting.shared.getOptionForScreenShare()<\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3>Set App&#8217;s Group Name<\/h3>\n\n\n\n<p>Use the following method to set Group Name and Key: <\/p>\n\n\n\n<p><strong>Method<\/strong>: <code>setAppGroupsName( groupname : String , withUserKey keyName : String)<\/code><\/p>\n\n\n\n<p><strong>Parameters:<\/strong><\/p>\n\n\n\n<ul><li>groupname &#8211; App&#8217;s Grup Name, e.g. group.com.compantName.AppName<\/li><li><code>keyName - <\/code>CLient ID<\/li><\/ul>\n\n\n\n<p> <strong>Example: Objective-C<\/strong>  <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[[EnxSetting shared] setAppGroupsNameWithGroupname:@\u201cApp Group name\u201d withUserKey:@\u201c\u201dclientID]; <\/pre>\n\n\n\n<p> <strong>Example: Swift<\/strong>   <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">EnxSetting.shared.setAppGroupsName(groupname: \"App Group name\", withUserKey: \"ClientID\")<\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3>Stop Screen Share<\/h3>\n\n\n\n<p><strong>Method<\/strong>: <code>public func stopStreenShare()<\/code><\/p>\n\n\n\n<p><strong>Example: Objective-C<\/strong>   <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[enxShare stopStreenShare];<\/pre>\n\n\n\n<p> <strong>Example: Swift<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">enxShare.stopStreenShare()<\/pre>\n\n\n\n<a name=\"participant-list\"><\/a>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2>Configure Participant&#8217;s List<\/h2>\n\n\n\n<p>Use the following method to configure Participant List<\/p>\n\n\n\n<p><strong>Method<\/strong>: <code>configureParticipantList(to list : [ParticipantListOptions.RawValue])<\/code><\/p>\n\n\n\n<p><strong>Parameters:<\/strong><\/p>\n\n\n\n<ul><li><code>list <\/code>&#8211; List of Enumerated data<\/li><\/ul>\n\n\n\n<p> <strong>Example: Swift<\/strong>   <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">EnxSetting.shared.configureParticipantList(\n\tto: [\n\t\tParticipantListOptions.audio.rawValue, \/* Audio Hard Mute *\/\n\t\tParticipantListOptions.video.rawValue, \/* Video Hard Mute *\/\n\t\tParticipantListOptions.chat.rawValue,   \/* Private Chat *\/\n\t\tParticipantListOptions.disconnect.rawValue   \/* Force disconnect *\/\n\t]\n); <\/pre>\n","protected":false},"excerpt":{"rendered":"<p>iOS Video UIKit helps you develop a Video UI quickly without having to read through vast iOS SDK Documentation and handling all complexities that comes along the development process. It provides easy way to get started with a Video UI for your native App. Download iOS UIKit v2.1.8Released: March 20, 2025 Table of Contents Overview What&#8217;s New? v2.1.8 &#8211; March 20, 2025 v2.1.3 v2.1.1 v1.2.2 v1.2 How to use Implementation&hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"parent":6062,"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":"iOS Video UIKit helps you develop a Video UI quickly without having to read through vast iOS SDK Documentation and handling all complexities that comes along the development process. It provides easy way to get started with a Video UI for your native App. Download iOS UIKit v2.1.8Released: March 20, 2025 Table of Contents Overview&hellip;","_links":{"self":[{"href":"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-json\/wp\/v2\/pages\/6065"}],"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=6065"}],"version-history":[{"count":0,"href":"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-json\/wp\/v2\/pages\/6065\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-json\/wp\/v2\/pages\/6062"}],"wp:attachment":[{"href":"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-json\/wp\/v2\/media?parent=6065"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}