{"id":23533,"date":"2022-10-31T18:31:00","date_gmt":"2022-10-31T13:01:00","guid":{"rendered":"https:\/\/www.mirrorfly.com\/blog\/?p=23533"},"modified":"2026-02-13T18:12:41","modified_gmt":"2026-02-13T12:42:41","slug":"build-a-virtual-classroom-ios-app-using-swift","status":"publish","type":"post","link":"https:\/\/www.mirrorfly.com\/blog\/build-a-virtual-classroom-ios-app-using-swift\/","title":{"rendered":"How to Build a Virtual Classroom App for iOS Using Swift?"},"content":{"rendered":"\n<p>Learning is a constantly evolving process. From school education to mastering a field of expertise, people thrive to adapt changes in order to get the education they aspire for. In the same row, technology is connecting educators and students in an online space with interactive, collaborative and secure tools and features. Yes, we are talking about Virtual classrooms and we will be discussing this technology in detail in the sections ahead.&nbsp;<\/p>\n\n\n\n<p>This article will introduce or reintroduce you to the technology, discuss its benefits and help you to build your own Virtual classroom app in less than 30 minutes. Ready for some interesting insight? Let&#8217;s get started!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"What_is_a_Virtual_Classroom_App\"><\/span><strong>What is a Virtual Classroom App?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p><strong>A Virtual Classroom <\/strong>is an online learning environment where instructors and participants can interact and engage, regardless of their location across the globe. This setup gives an in-class experience, with tools to teach, raise questions, make discussions, and conduct examinations.&nbsp;<\/p>\n\n\n\n<p>A virtual classroom app makes it more easy and convenient for students and instructors to join sessions, access learning materials and submit assignments, from any device and on any platform.&nbsp;<\/p>\n\n\n\n<p><strong>In a virtual classroom app, an instructor can:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Share screen and use whiteboard features to teach a topic\/ subject<\/li>\n\n\n\n<li>Record the session and share it with students as documents or multimedia files<\/li>\n\n\n\n<li>Divide participants into groups and allocate them separate breakout rooms<\/li>\n\n\n\n<li>Conduct quizzes and polls<\/li>\n\n\n\n<li>Moderate student with access control on entry, exit and muting options<\/li>\n<\/ul>\n\n\n\n<section class=\"interested2\">\n<div class=\"interested-inn2\">\n<div class=\"flag2\">\n<div style=\"width: 47px; height: 47px; background:#ff0935; border-radius: 14px; transform: rotate(45deg);\">&nbsp;<\/div>\n<\/div><div class=\"flex-box\">\n<div class=\"left-part\">Save Your Time. Integrate Video Call SDK in 20 mins! <\/div>\n<div class=\"right-part\">\n<a href=\"https:\/\/www.mirrorfly.com\/contact-sales.php\" class=\"btns\">Request Demo<\/a>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Benefits_Of_Virtual_Classroom\"><\/span><strong>Benefits Of Virtual Classroom&nbsp;<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p><strong>There are several benefits of using a virtual classroom for both instructors and participants. They include,<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Easy Access:<\/strong> Virtual classrooms make it easy for students to attend classes from anywhere. Only with an internet connection, it is possible to join any session, seminar or webinar.&nbsp;<\/li>\n\n\n\n<li><strong>Saves Cost &amp; Time: <\/strong>Virtual Classrooms eliminate the need for travel to learning facilities or schools. This saves a lot of expenses in travel and amenities.&nbsp;<\/li>\n\n\n\n<li><strong>Extends The Learning Horizon: <\/strong>Apart from the regular classes, students can also avail lessons on subject of their interest from Educators around the globe.&nbsp;<\/li>\n\n\n\n<li><strong>Improved Interaction and Collaboration: <\/strong>Online discussion forums and learning activities can drive more interaction from participants.&nbsp;<\/li>\n\n\n\n<li><strong>Resources: <\/strong>Participants can exchange learning materials with each other, participate in competitive exams and access lecture recordings<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Steps_to_Build_a_Virtual_Classroom_App_or_Website\"><\/span><strong>Steps to Build a Virtual Classroom App or Website <\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>While Virtual Classrooms is becoming an essential tool for learning, the need for feature-rich <a href=\"https:\/\/www.apphitect.ae\/blog\/best-virtual-classroom-platforms\/\">virtual classroom<\/a> apps is naturally increasing. Well, this article is written to serve your interest in building a virtual classroom app.&nbsp;<\/p>\n\n\n\n<p>In this guide,&nbsp; you will learn how to develop an iOS app for educational purposes with the help of <a href=\"https:\/\/www.mirrorfly.com\/chat-security.php\" target=\"_blank\" rel=\"noreferrer noopener\">end-to-end encrypted<\/a> SDKs from MirrorFly.&nbsp;<\/p>\n\n\n\n<p>This tutorial was built using:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Xcode 13+<\/li>\n\n\n\n<li>Swift 5.0+<\/li>\n\n\n\n<li>iOS 13+<\/li>\n\n\n\n<li>MirrorFly Video SDKs<\/li>\n<\/ul>\n\n\n\n<p><strong>Note: <\/strong>If you\u2019d like to build the video call on our sample app, you can check out our <a href=\"https:\/\/github.com\/orgs\/MirrorFly\/repositories\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub repositories<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Set_Up_Your_iOS_Virtual_Classroom_Project\"><\/span><strong>Set Up Your iOS Virtual Classroom Project<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 1: Create an Xcode Project<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Launch Xcode<\/li>\n\n\n\n<li>Create a New Project&nbsp;<\/li>\n\n\n\n<li>Select Single View App from the Template grids<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=\" data-src=\"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2024\/04\/template-grids.webp\" alt=\"template grids\" class=\"wp-image-23939\"><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>In the following form, configure your project with the necessary details<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=\" data-src=\"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2024\/04\/create-xcode.webp\" alt=\"create xcode\" class=\"wp-image-23939\"><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 2: Get MirrorFly License Key<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Go to <a href=\"https:\/\/console.mirrorfly.com\/register\" target=\"_blank\" rel=\"noreferrer noopener\">MirrorFly Console Page<\/a><\/li>\n\n\n\n<li>Fill in your basic details<\/li>\n\n\n\n<li>Click on <strong>Sign Up<\/strong><\/li>\n\n\n\n<li>Verify your account using your registered email ID<\/li>\n\n\n\n<li>Login to your MirrorFly Account<\/li>\n\n\n\n<li>In your Account Overview page, download the iOS SDK file<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=\" data-src=\"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2024\/04\/license-key.webp\" alt=\"mirrorfly license key\" class=\"wp-image-23939\"><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 3: Integrate MirrorFly SDKs&nbsp;<\/strong><\/h3>\n\n\n\n<p><em><strong>i. Extract and Import the framework files into the Project<\/strong><\/em><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>From the downloaded SDK package, extract the framework files<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>FlyCall.xcframework\nFlyCore.xcframework\nFlyCommon.xcframework\nFlyNetwork.xcframework\nFlyDatabase.xcframework\nFlyXmpp.xcframework\nFlyTranslate.xcframework<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Go to <strong>Project<\/strong><\/li>\n\n\n\n<li>Select <strong>Target, <\/strong>then <strong>General<\/strong><\/li>\n\n\n\n<li>Click on <strong>Frameworks, <\/strong>libraries,<strong> and Embedded Content<\/strong><\/li>\n\n\n\n<li>Against all the xcframeworks, select <strong>Embed &amp; Sign<\/strong><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=\" data-src=\"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2024\/04\/call-embed.webp\" alt=\"embed video call\" class=\"wp-image-23939\"><\/figure>\n\n\n\n<p><em><strong>ii. Disable the bitcodes<\/strong><\/em><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Go to Project<\/li>\n\n\n\n<li>Click on Build Settings<\/li>\n\n\n\n<li>Search for the term <strong>\u2018Bitcode\u2019 <\/strong>and filter it<\/li>\n\n\n\n<li>Select \u2018No\u2019 from the dropdown<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=\" data-src=\"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2024\/04\/bitcode.webp\" alt=\"bitcode api\" class=\"wp-image-23939\"><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em><strong>Iii.&nbsp; Initiate the Pods for your Project<\/strong><\/em><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code> pod 'libPhoneNumber-iOS'\n pod 'Alamofire'\n pod 'RealmSwift', '10.20.1'\n pod 'XMPPFramework\/Swift'\n pod 'SocketRocket'\n pod 'Socket.IO-Client-Swift'\n pod 'GoogleWebRTC'<\/code><\/pre>\n\n\n\n<p><em><strong>iv. At the end of the pod file, add the pod hook block and continue to install the pods<\/strong><\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>post_install do |installer|\n  installer.pods_project.targets.each do |target|\n    target.build_configurations.each do |config|\n      config.build_settings&#91;'IPHONEOS_DEPLOYMENT_TARGET'] = '12.1'\n      config.build_settings&#91;'ENABLE_BITCODE'] = 'NO'\n      config.build_settings&#91;'APPLICATION_EXTENSION_API_ONLY'] = 'No'\n      config.build_settings&#91;'BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'\n    end\n  end\nend<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=\" data-src=\"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2024\/04\/call-podfile.webp\" alt=\"call podlife\" class=\"wp-image-23939\"><\/figure>\n\n\n\n<p><em><strong>v.&nbsp; Configure your project with the below capabilities<\/strong><\/em><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Go to <strong>Project<\/strong><\/li>\n\n\n\n<li>Select <strong>Target &gt; Signing &amp; Capabilities<\/strong><\/li>\n\n\n\n<li>Click <strong>\u2018+\u2019<\/strong> at the top left corner&nbsp;<\/li>\n\n\n\n<li>Search for the capabilities:<strong> App groups<\/strong> and <strong>Background Mode<\/strong><\/li>\n\n\n\n<li>Under Background Mode, enable the following:\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.contus.com\/blog\/voice-chat-api-for-enterprise-apps\/\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"broken_link\">Audio<\/a>, Airplay, and Picture in Picture<\/li>\n\n\n\n<li>Remote notifications<\/li>\n\n\n\n<li>Voice over IP<\/li>\n\n\n\n<li>Background fetch<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=\" data-src=\"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2022\/10\/Call-Capabilities.webp\" alt=\"\" class=\"wp-image-23588\"\/><\/figure>\n\n\n\n<p><em><strong>vi. Enable the permissions for audio and video&nbsp;<\/strong><\/em><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>In this step, grant access to the camera and Microphone in your plist<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 4: Perform SDK Configuration<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use the AppDelegate class and configure server details in the SDK&nbsp;<\/li>\n\n\n\n<li>Provide the License Key you generated in the first step of this tutorial<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>let BASE_URL = \"https:\/\/api-preprod-sandbox.mirrorfly.com\/api\/v1\/\"\nlet LICENSE_KEY = \"xxxxxxxxxxxxxxxxxxxxxx\"\nlet CONTAINER_ID = \"group.com.mirrorfly.qa\"<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 5: User Registration&nbsp;<\/strong><\/h3>\n\n\n\n<p>Next, you need to register a user in sandbox and live mode. Use the below method in the <em><strong>ChatSDK.Builder<\/strong><\/em> class.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>try! ChatManager.registerApiService(for:  USER_IDENTIFIER ) { isSuccess, flyError, flyData in\n        var data = flyData\n        if isSuccess {\n         \/\/ This is your Password\n           guard let password = data&#91;\"password\"] as? String else{\n               return\n           }\n           \/\/ This is your Username\n           guard let username = data&#91;\"username\"] as? String else{\n               return\n           }\n        }else{\n            let error = data.getMessage()\n            print(\"#chatSDK \\(error)\")\n        }\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 6: Initialization of the Call SDK<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Once you complete with the registration process, you need to call the below method:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>try! CallManager.initCallSDK()<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 7: Connect the SDK to the Chat Server<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>You need to establish a chat server connection to transfer the initial call data payload<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>ChatManager.connect()<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 8: Disconnect the SDK from the Chat Server<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use the below method to disconnect the SDK from the Chat Server<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>ChatManager.disconnect()<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 9: Observe Connect Events of Your Virtual Classroom App<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Confirm the ConnectionEventDelegate to track and monitor the connection status of your iOS app.&nbsp;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>You can do this by setting up \u2018delegate\u2019 in the viewDidAppear method of the <em><strong>ViewController<\/strong><\/em><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>ChatManager.shared.connectionDelegate = self<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Once you set the <strong><em>ConnectionEventDelegate<\/em><\/strong>, you will receive the status of the connection in the delegate as given below<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>func onConnected() {\n  \/\/ Navigate to Conversation screen\n  }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 10: Observation of the Call Events&nbsp;<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>To observe you call events, you need to create and set a Singleton Class.&nbsp;<\/li>\n\n\n\n<li>Then, pass the object to the below method<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>CallManager.setCallEventsDelegate(delegate:CALLMANAGER_DELEGATE)<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 11: Set Up the Call UI of Your Online Classroom App<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>This step will implement the Call UI that will be displayed on the user screen of your classroom app during an outgoing call.&nbsp;<\/li>\n\n\n\n<li>To do this, you need to pass an instantiated view controller object as mentioned below:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>CallManager.setCallViewController(CALL_VIEW_CONTROLLER)<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 12: Present the Call UI for an Outgoing Call<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>To present the call UI of an outgoing call, you need to call the below method after declaring the call SDK or before making a call.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>CallManager.setViewToPresentController(\"VIEW_TO_PRESENT\")<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 13: Make a Virtual Group Video Call<\/strong><\/h3>\n\n\n\n<p>Connect multiple students and staff in the same call using the below method<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CallManager.makeGroupVideoCall(USERID_LIST, GROUP_ID, (isSuccess, message) -&gt; {\n }<\/code><\/pre>\n\n\n\n<div class=\"recommended-reading\">\n  <div class=\"recommended-header\"><svg class=\"gW_Lq\" style=\"float: left;width: 166px;\" viewBox=\"0 0 210 190\"><defs><path id=\"e26um264ea\" d=\"M18 0h174c9.941 0 18 8.059 18 18v154c0 9.941-8.059 18-18 18H18c-9.941 0-18-8.059-18-18V18C0 8.059 8.059 0 18 0z\"><\/path><\/defs><g fill=\"none\" fill-rule=\"evenodd\"><g><g transform=\"translate(-188 -8232) translate(188 8232)\"><mask id=\"pdc13wuw9b\" fill=\"#fff\"><use xlink:href=\"#e26um264ea\"><\/use><\/mask><circle cx=\"63\" cy=\"95\" r=\"147\" fill=\"#06F\" mask=\"url(#pdc13wuw9b)\"><\/circle><\/g><\/g><\/g><\/svg>\n       <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"122.88\" height=\"101.362\" viewBox=\"0 0 122.88 101.362\" style=\"position: absolute;left: 40px;width: 75px;top: 20px;\">\n       <g id=\"read-book\" transform=\"translate(0 0.002)\">\n         <path id=\"Path_14\" data-name=\"Path 14\" d=\"M12.64,77.27l.31-54.92H6.75V92.23a105.631,105.631,0,0,1,25.68-3.66A72.227,72.227,0,0,1,56.3,92.33a50.968,50.968,0,0,0-16.36-8.88,59.8,59.8,0,0,0-23.66-2.52,3.379,3.379,0,0,1-3.64-3.08,2.81,2.81,0,0,1,0-.58Zm90.98-57.79a4.059,4.059,0,0,1-.04-.51,2.922,2.922,0,0,1,.04-.51V7.34a51.6,51.6,0,0,0-22.86,2.78,31.5,31.5,0,0,0-15.9,12.44V85.9a80.643,80.643,0,0,1,17.58-9.1,50.565,50.565,0,0,1,21.18-3.02V19.48Zm6.75-3.88h9.14a3.372,3.372,0,0,1,3.37,3.37V96.63a3.372,3.372,0,0,1-3.37,3.37,3.28,3.28,0,0,1-1.09-.18c-9.4-2.69-18.74-4.48-27.99-4.54a64.964,64.964,0,0,0-27.08,5.52,3.4,3.4,0,0,1-1.92.56,3.445,3.445,0,0,1-1.92-.56,64.776,64.776,0,0,0-27.08-5.52c-9.25.06-18.58,1.85-27.99,4.54a3.28,3.28,0,0,1-1.09.18A3.352,3.352,0,0,1,0,96.64V18.97A3.372,3.372,0,0,1,3.37,15.6h9.61l.06-11.26a3.366,3.366,0,0,1,2.68-3.28h0a53.466,53.466,0,0,1,29.1,2.23A37.372,37.372,0,0,1,61.61,15.54,39.244,39.244,0,0,1,78.39,3.82a59.114,59.114,0,0,1,29.09-2.8,3.365,3.365,0,0,1,2.88,3.33h0V15.6ZM68.13,91.82a72.556,72.556,0,0,1,22.33-3.26,105.146,105.146,0,0,1,25.68,3.66V22.35h-5.77V77.57A3.372,3.372,0,0,1,107,80.94a3.331,3.331,0,0,1-.78-.09,43.167,43.167,0,0,0-21.51,2.29,75.366,75.366,0,0,0-16.58,8.68ZM58.12,85.25V22.46c-3.53-6.23-9.24-10.4-15.69-12.87A46.533,46.533,0,0,0,19.75,7.18l-.38,66.81a65.191,65.191,0,0,1,22.64,3.06,57.689,57.689,0,0,1,16.11,8.2Z\" fill=\"#fff\"><\/path>\n       <\/g>\n   <\/svg>\n<\/div>\n   <h3 class=\"has-text-align-center title\"><span class=\"ez-toc-section\" id=\"Now_Its_Tips_for_Build_Educational_Tutoring_Apps\"><\/span>Recommended Reading<span class=\"ez-toc-section-end\"><\/span><\/h3>\n   <ul class=\"guide\">\n       <li>\n<a style=\"float: left; padding-left: 0; cursor: pointer;\" href=\"https:\/\/www.mirrorfly.com\/blog\/build-a-video-chat-app-using-react-js\/\"> React JS Video Chat App<\/a><\/li>\n<li><a style=\"float: left; cursor: pointer;\" href=\"https:\/\/www.mirrorfly.com\/tutorials\/build-video-chat-app-for-web.php\"> Video Chat App For The Web<\/a><\/li>\n   <\/ul>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 14: Add Students\/Staff to the Call<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>To add students or staff to an ongoing <a href=\"https:\/\/www.mirrorfly.com\/video-call-solution.php\" target=\"_blank\" rel=\"noreferrer noopener\">live video call<\/a> by inviting them using the below method.&nbsp;<\/li>\n\n\n\n<li>Once the invited participant accepts the call, he\/she will be added to the online classroom.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>CallManager.inviteUsersToOngoingCall(USERID_LIST);<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 15: Receive an Incoming Video Call<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The NotificationCenter will report to the FlyCallSDK, whenever a participant receives an incoming call from other users.&nbsp;<\/li>\n\n\n\n<li>To set this up, you need to use the below method:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>NotificationCenter.default.post(name: NSNotification.Name(\"CallPayloadReceived\"), object: messageDict)<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 16: Disconnect an Ongoing Call<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>When a student or staff needs to leave the ongoing classroom, the below method will disconnect the participant from the ongoing call.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>CallManager.disconnectCall()<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Thats_a_Wrap\"><\/span><strong>That\u2019s a Wrap<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Yes, you\u2019ve made it!&nbsp;I hope this guide gave you all the details to help you build a fully functioning EdTech app that can work on any<a href=\"https:\/\/scalefusion.com\/ios-mobile-device-management\"> iOS device<\/a>. You can also experiment our features using our <a href=\"https:\/\/github.com\/orgs\/MirrorFly\/repositories\">sample app<\/a> that is available in our github repo. Above this, if you\u2019d like to add 100% customizable video, voice and chat features to your online education app, we have a <a href=\"https:\/\/www.mirrorfly.com\/self-hosted-chat-solution.php\">self-hosted solution<\/a> you can get for a one-time license cost. Interested? Talk to our sales team now!<\/p>\n\n\n\n<div class=\"cta-wrapper-two\">\n<summary class=\"cta-heading-two\">Get Started with MirrorFly\u2019s Modern <span class=\"highlight\">Chat API<\/span> Today!<\/summary>\n<p class=\"cta-content-two\">Drive 1+ billions of conversations on your apps with highly secure 250+ real-time Communication Features.<\/p>\n<a href=\"https:\/\/www.mirrorfly.com\/contact-sales.php\" class=\"self-host-cta-btn\">Contact Sales<\/a>\n<ul class=\"cta-wrapper-list-two\">\n<li><img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=\" data-src=\"https:\/\/www.mirrorfly.com\/blog\/wp-content\/themes\/mirrorfly\/assets\/images\/tick-icon.svg\">\n200+ Happy Clients<\/li>\n<li><img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=\" data-src=\"https:\/\/www.mirrorfly.com\/blog\/wp-content\/themes\/mirrorfly\/assets\/images\/tick-icon.svg\">\nTopic-based Chat<\/li>\n<li><img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=\" data-src=\"https:\/\/www.mirrorfly.com\/blog\/wp-content\/themes\/mirrorfly\/assets\/images\/tick-icon.svg\">\nMulti-tenancy Support<\/li>\n<\/ul>\n<img decoding=\"async\" src=\"https:\/\/www.mirrorfly.com\/blog\/wp-content\/themes\/mirrorfly\/assets\/images\/saas-cta-bg.webp\" class=\"cta-image-thumbnail-two\">\n<\/div>\n\n\n\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\/\", \n  \"@type\": \"HowTo\", \n  \"name\": \"Build a Virtual Classroom App for Web & Apps\",\n  \"description\": \"Learn how to build a virtual classroom app with chat, voice and video calls to interact with everyone for an effective e-learning experience.\",\n  \"image\": \"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2022\/10\/virtual-classroom-app.webp\",\n  \"totalTime\": \"PT6M\",\n  \"estimatedCost\": {\n    \"@type\": \"MonetaryAmount\",\n    \"currency\": \"USD\",\n    \"value\": \"0\"\n   },\n  \"tool\": {\n    \"@type\": \"HowToTool\",\n    \"name\": \"Your Web Browser (Chrome, Safari etc.)\"\n  },\n  \"step\": [{\n    \"@type\": \"HowToStep\",\n    \"text\": \"When you integrate the MirrorFly SDK into your app, it has to be authenticated by the MirrorFly server. For this, you will need a License Key.\",\n    \"image\": \"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2022\/08\/how-to-build-an-andriod-app.webp\",\n    \"name\": \"Create An Account With Mirrorfly\",\n    \"url\": \"https:\/\/www.mirrorfly.com\/blog\/build-android-app-with-voice-video-using-java\/#get_the_license_key\"\n  },{\n    \"@type\": \"HowToStep\",\n    \"text\": \"Once you sign into your account, you will be taken to the overview page.\",\n    \"image\": \"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2022\/09\/android-1.webp\",\n    \"name\": \"Get The License Key\",\n    \"url\": \"https:\/\/www.mirrorfly.com\/blog\/build-android-app-with-voice-video-using-java\/#get_the_license_key\"\n  },{\n    \"@type\": \"HowToStep\",\n    \"text\": \"Navigate below where you will have the Android SDK available for download. Click on \u2018Download\u2019. Find the downloaded SDK folder on your device. Extract the AAR files and get them ready for the integration process.\",\n    \"image\": \"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2022\/08\/MirrorFly-Overview-800x352.jpg\",\n    \"name\": \"Download SDKs\",\n    \"url\": \"https:\/\/www.mirrorfly.com\/blog\/build-android-app-with-voice-video-using-java\/#download_sdks\"\n  },{\n    \"@type\": \"HowToStep\",\n    \"text\": \"The SDKs are already available as AAR files. They just need to be imported into the Android Project for the integration process to commence.\",\n    \"image\": \"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2022\/08\/library-files-317x530.jpg\",\n    \"name\": \"SDK Integration to Add Voice and Video Capabilities\",\n    \"url\": \"https:\/\/www.mirrorfly.com\/blog\/build-android-app-with-voice-video-using-java\/#sdk_integration_to_add_voice_and_video_capabilities\"\n  }]    \n}\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Learning is a constantly evolving process. From school education to mastering a field of expertise, people thrive to adapt changes in order to get the education they aspire for. In the same row, technology is connecting educators and students in an online space with interactive, collaborative and secure tools and features. Yes, we are talking [&hellip;]<\/p>\n","protected":false},"author":85,"featured_media":33199,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_stopmodifiedupdate":false,"_modified_date":"","footnotes":""},"categories":[1272],"tags":[2119,2118,2120,2146,1498,2122],"class_list":["post-23533","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tech-talks","tag-build-a-virtual-clasroom-app","tag-build-a-virtual-classroom-app","tag-build-a-virtual-classroom-ios-app","tag-build-virtual-classroom-app","tag-virtual-classroom","tag-virtual-classroom-app"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Build a Virtual Classroom App for iOS, Android &amp; Web?<\/title>\n<meta name=\"description\" content=\"Learn how to build a virtual classroom app with chat, voice and video calls to interact with everyone for an effective e-learning experience.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.mirrorfly.com\/blog\/build-a-virtual-classroom-ios-app-using-swift\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Build a Virtual Classroom Software for Online Teaching in 2026\" \/>\n<meta property=\"og:description\" content=\"Learn how to build a virtual classroom app with chat, voice and video calls to interact with everyone for an effective e-learning experience.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mirrorfly.com\/blog\/build-a-virtual-classroom-ios-app-using-swift\/\" \/>\n<meta property=\"og:site_name\" content=\"MirrorFly Blog - Chat API And Messaging SDK for your Mobile and Web Apps\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/MirrorFlyofficial\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-31T13:01:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-13T12:42:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2024\/04\/build-virtual-classroom-app.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"418\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Atchaya Jayabal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Build a Virtual Classroom App for Online Teaching in 2026\" \/>\n<meta name=\"twitter:description\" content=\"Learn how to build a virtual classroom app with chat, voice and video calls to interact with everyone for an effective e-learning experience.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2024\/04\/build-virtual-classroom-app.webp\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Atchaya Jayabal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/build-a-virtual-classroom-ios-app-using-swift\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/build-a-virtual-classroom-ios-app-using-swift\/\"},\"author\":{\"name\":\"Atchaya Jayabal\",\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/#\/schema\/person\/27e1ae59b77c7775bd63034148eb3294\"},\"headline\":\"How to Build a Virtual Classroom App for iOS Using Swift?\",\"datePublished\":\"2022-10-31T13:01:00+00:00\",\"dateModified\":\"2026-02-13T12:42:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/build-a-virtual-classroom-ios-app-using-swift\/\"},\"wordCount\":1305,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/#organization\"},\"keywords\":[\"build a virtual clasroom app\",\"build a virtual classroom app\",\"build a virtual classroom ios app\",\"build virtual classroom app\",\"virtual classroom\",\"virtual classroom app\"],\"articleSection\":[\"Tech Talks\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.mirrorfly.com\/blog\/build-a-virtual-classroom-ios-app-using-swift\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/build-a-virtual-classroom-ios-app-using-swift\/\",\"url\":\"https:\/\/www.mirrorfly.com\/blog\/build-a-virtual-classroom-ios-app-using-swift\/\",\"name\":\"Build a Virtual Classroom App for iOS, Android & Web?\",\"isPartOf\":{\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/#website\"},\"datePublished\":\"2022-10-31T13:01:00+00:00\",\"dateModified\":\"2026-02-13T12:42:41+00:00\",\"description\":\"Learn how to build a virtual classroom app with chat, voice and video calls to interact with everyone for an effective e-learning experience.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/build-a-virtual-classroom-ios-app-using-swift\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.mirrorfly.com\/blog\/build-a-virtual-classroom-ios-app-using-swift\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/build-a-virtual-classroom-ios-app-using-swift\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog\",\"item\":\"https:\/\/www.mirrorfly.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tech Talks\",\"item\":\"https:\/\/www.mirrorfly.com\/blog\/category\/tech-talks\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How to Build a Virtual Classroom App for iOS Using Swift?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/#website\",\"url\":\"https:\/\/www.mirrorfly.com\/blog\/\",\"name\":\"MirrorFly Blog - Chat API And Messaging SDK for your Mobile and Web Apps\",\"description\":\"World&#039;s Most Scalable Chat APIs &amp; SDKs for Small, Medium &amp; Enterprises\",\"publisher\":{\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.mirrorfly.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/#organization\",\"name\":\"MirrorFly\",\"url\":\"https:\/\/www.mirrorfly.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2020\/07\/mirrorfly-blue.png\",\"contentUrl\":\"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2020\/07\/mirrorfly-blue.png\",\"width\":520,\"height\":100,\"caption\":\"MirrorFly\"},\"image\":{\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/MirrorFlyofficial\/\",\"https:\/\/www.instagram.com\/mirrorflyofficial\/\",\"https:\/\/www.linkedin.com\/showcase\/mirrorfly-official\/\",\"https:\/\/x.com\/MirrorFlyTeam\/\",\"https:\/\/github.com\/mirrorfly\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/#\/schema\/person\/27e1ae59b77c7775bd63034148eb3294\",\"name\":\"Atchaya Jayabal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c7684e399858444026b2603501ecba15?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c7684e399858444026b2603501ecba15?s=96&d=mm&r=g\",\"caption\":\"Atchaya Jayabal\"},\"description\":\"Atchaya Jayabal leads Content at MirrorFly and is an expert in writing Tech, SaaS & B2B. She regularly publishes articles on CPaaS & Conversational AI in blogs.\",\"url\":\"https:\/\/www.mirrorfly.com\/blog\/author\/atchaya-jayabal\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Build a Virtual Classroom App for iOS, Android & Web?","description":"Learn how to build a virtual classroom app with chat, voice and video calls to interact with everyone for an effective e-learning experience.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.mirrorfly.com\/blog\/build-a-virtual-classroom-ios-app-using-swift\/","og_locale":"en_US","og_type":"article","og_title":"Build a Virtual Classroom Software for Online Teaching in 2026","og_description":"Learn how to build a virtual classroom app with chat, voice and video calls to interact with everyone for an effective e-learning experience.","og_url":"https:\/\/www.mirrorfly.com\/blog\/build-a-virtual-classroom-ios-app-using-swift\/","og_site_name":"MirrorFly Blog - Chat API And Messaging SDK for your Mobile and Web Apps","article_publisher":"https:\/\/www.facebook.com\/MirrorFlyofficial\/","article_published_time":"2022-10-31T13:01:00+00:00","article_modified_time":"2026-02-13T12:42:41+00:00","og_image":[{"width":800,"height":418,"url":"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2024\/04\/build-virtual-classroom-app.webp","type":"image\/webp"}],"author":"Atchaya Jayabal","twitter_card":"summary_large_image","twitter_title":"Build a Virtual Classroom App for Online Teaching in 2026","twitter_description":"Learn how to build a virtual classroom app with chat, voice and video calls to interact with everyone for an effective e-learning experience.","twitter_image":"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2024\/04\/build-virtual-classroom-app.webp","twitter_misc":{"Written by":"Atchaya Jayabal","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.mirrorfly.com\/blog\/build-a-virtual-classroom-ios-app-using-swift\/#article","isPartOf":{"@id":"https:\/\/www.mirrorfly.com\/blog\/build-a-virtual-classroom-ios-app-using-swift\/"},"author":{"name":"Atchaya Jayabal","@id":"https:\/\/www.mirrorfly.com\/blog\/#\/schema\/person\/27e1ae59b77c7775bd63034148eb3294"},"headline":"How to Build a Virtual Classroom App for iOS Using Swift?","datePublished":"2022-10-31T13:01:00+00:00","dateModified":"2026-02-13T12:42:41+00:00","mainEntityOfPage":{"@id":"https:\/\/www.mirrorfly.com\/blog\/build-a-virtual-classroom-ios-app-using-swift\/"},"wordCount":1305,"commentCount":0,"publisher":{"@id":"https:\/\/www.mirrorfly.com\/blog\/#organization"},"keywords":["build a virtual clasroom app","build a virtual classroom app","build a virtual classroom ios app","build virtual classroom app","virtual classroom","virtual classroom app"],"articleSection":["Tech Talks"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.mirrorfly.com\/blog\/build-a-virtual-classroom-ios-app-using-swift\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.mirrorfly.com\/blog\/build-a-virtual-classroom-ios-app-using-swift\/","url":"https:\/\/www.mirrorfly.com\/blog\/build-a-virtual-classroom-ios-app-using-swift\/","name":"Build a Virtual Classroom App for iOS, Android & Web?","isPartOf":{"@id":"https:\/\/www.mirrorfly.com\/blog\/#website"},"datePublished":"2022-10-31T13:01:00+00:00","dateModified":"2026-02-13T12:42:41+00:00","description":"Learn how to build a virtual classroom app with chat, voice and video calls to interact with everyone for an effective e-learning experience.","breadcrumb":{"@id":"https:\/\/www.mirrorfly.com\/blog\/build-a-virtual-classroom-ios-app-using-swift\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mirrorfly.com\/blog\/build-a-virtual-classroom-ios-app-using-swift\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.mirrorfly.com\/blog\/build-a-virtual-classroom-ios-app-using-swift\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog","item":"https:\/\/www.mirrorfly.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tech Talks","item":"https:\/\/www.mirrorfly.com\/blog\/category\/tech-talks\/"},{"@type":"ListItem","position":3,"name":"How to Build a Virtual Classroom App for iOS Using Swift?"}]},{"@type":"WebSite","@id":"https:\/\/www.mirrorfly.com\/blog\/#website","url":"https:\/\/www.mirrorfly.com\/blog\/","name":"MirrorFly Blog - Chat API And Messaging SDK for your Mobile and Web Apps","description":"World&#039;s Most Scalable Chat APIs &amp; SDKs for Small, Medium &amp; Enterprises","publisher":{"@id":"https:\/\/www.mirrorfly.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mirrorfly.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.mirrorfly.com\/blog\/#organization","name":"MirrorFly","url":"https:\/\/www.mirrorfly.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.mirrorfly.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2020\/07\/mirrorfly-blue.png","contentUrl":"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2020\/07\/mirrorfly-blue.png","width":520,"height":100,"caption":"MirrorFly"},"image":{"@id":"https:\/\/www.mirrorfly.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/MirrorFlyofficial\/","https:\/\/www.instagram.com\/mirrorflyofficial\/","https:\/\/www.linkedin.com\/showcase\/mirrorfly-official\/","https:\/\/x.com\/MirrorFlyTeam\/","https:\/\/github.com\/mirrorfly"]},{"@type":"Person","@id":"https:\/\/www.mirrorfly.com\/blog\/#\/schema\/person\/27e1ae59b77c7775bd63034148eb3294","name":"Atchaya Jayabal","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.mirrorfly.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c7684e399858444026b2603501ecba15?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c7684e399858444026b2603501ecba15?s=96&d=mm&r=g","caption":"Atchaya Jayabal"},"description":"Atchaya Jayabal leads Content at MirrorFly and is an expert in writing Tech, SaaS & B2B. She regularly publishes articles on CPaaS & Conversational AI in blogs.","url":"https:\/\/www.mirrorfly.com\/blog\/author\/atchaya-jayabal\/"}]}},"_links":{"self":[{"href":"https:\/\/www.mirrorfly.com\/blog\/wp-json\/wp\/v2\/posts\/23533","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mirrorfly.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mirrorfly.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mirrorfly.com\/blog\/wp-json\/wp\/v2\/users\/85"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mirrorfly.com\/blog\/wp-json\/wp\/v2\/comments?post=23533"}],"version-history":[{"count":35,"href":"https:\/\/www.mirrorfly.com\/blog\/wp-json\/wp\/v2\/posts\/23533\/revisions"}],"predecessor-version":[{"id":43169,"href":"https:\/\/www.mirrorfly.com\/blog\/wp-json\/wp\/v2\/posts\/23533\/revisions\/43169"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mirrorfly.com\/blog\/wp-json\/wp\/v2\/media\/33199"}],"wp:attachment":[{"href":"https:\/\/www.mirrorfly.com\/blog\/wp-json\/wp\/v2\/media?parent=23533"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mirrorfly.com\/blog\/wp-json\/wp\/v2\/categories?post=23533"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mirrorfly.com\/blog\/wp-json\/wp\/v2\/tags?post=23533"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}