# Demo quickstart (/en/realtime-media/flexible-classroom/quickstart/ios)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

Compelling content like animated presentations with embedded media helps actively engage students for longer in online classrooms. Agora Flexible Classroom helps you personalize distance learning using interactive video, shared whiteboards and other collaboration tools. With Flexible Classroom, you can quickly deploy effective online tutoring software that is customized with the features and branding your organization needs.

This page shows you how to quickly set up and launch a Flexible Classroom.

## Understand the tech [#understand-the-tech]

This section explains the workflow you implement to join a Flexible Classroom.

![Flexible Classroom join workflow](https://web-cdn.agora.io/docs-files/1623309158910)

When an app client requests to join a Flexible Classroom, the app client and your app server interact with the Agora server in the following steps:

1. Your app client sends a request to your app server for a Signaling token.
2. Your app server generates a Signaling token using the Agora [App ID](./build/manage-agora-account.mdx), [App Certificate](./build/manage-agora-account.mdx), and a user ID. For details, see [Generate a Signaling token](./build/set-up-your-account-and-authentication/authentication-workflow.mdx).
3. Your app client calls an API with the following parameters to join a Flexible Classroom:
   * *The user ID*: A unique string identifying a user, generated by your security system. This ID must be the same as the user ID you use for generating the Signaling token.
   * *The room ID*: A string for identifying a classroom. When the first user joins a Flexible Classroom, Agora automatically creates a classroom with the room ID.
   * *The Signaling token*: A credential for verifying the identity of the user when they join a Flexible Classroom.

## Prerequisites [#prerequisites]

In order to follow this procedure you must have:

* An Agora [account](./build/manage-agora-account.mdx) and [project](./build/manage-agora-account.mdx).
* A computer with Internet access. Ensure that no firewall is blocking your network communication.
* [Enabled Flexible Classroom](./build/set-up-your-account-and-authentication/enable-flexible-classroom) in Agora Console.

      
  
      
    ## iOS [#ios]

    * Installed [CocoaPods](https://guides.cocoapods.org/using/getting-started.html#getting-started) version 1.10 or later.

    * If you use Swift, make sure you have version `5.0` or later.

    ## Project setup [#project-setup-1]

    To set up your Flexible Classroom project:

    1. Clone the repository:

       ```bash
       git clone https://github.com/AgoraIO-Community/flexible-classroom-ios.git
       ```

    2. Update to the supported version of Flexible Classroom:

       ```bash
       cd flexible-classroom-ios
       git checkout release/2.8.11
       ```

    ## Implement a flexible classroom [#implement-a-flexible-classroom-1]

    To configure and launch your Flexible Classroom from the downloaded source code:

    1. Navigate to the `CloudClass-iOS/App` directory:

       ```bash
       cd App
       ```

    2. Install project dependencies using the following command:

       ```bash
       pod install
       ```

       You see the dependency package install.

       ![CocoaPods dependency installation output](https://assets-docs.agora.io/images/flexible-classroom/pod-install-demo.png)

    3. To open the project in Xcode, use the following command:

       ```bash
       open AgoraEducation.xcworkspace
       ```

       You see the following:

       ![AgoraEducation workspace open in Xcode](https://web-cdn.agora.io/docs-files/1648725725804)

    4. In Signing & Capabilities under the project **TARGETS**, check **Automatically manage signing**, and configure your Apple developer account and Bundle Identifier.

       ![Xcode Signing and Capabilities settings](https://web-cdn.agora.io/docs-files/1648725848162)

    ## Test your implementation [#test-your-implementation-1]

    1. Connect a physical iOS device to your development device.

    2. In Xcode, click **Run**. A moment later, the project is installed on your device.

    3. On the login screen, type in a room name and user name. Select a class type, set the user role to `Teacher` and then press **Enter**.

       ![Flexible Classroom iOS login screen](https://web-cdn.agora.io/docs-files/1648726024179)

       You are logged in to Flexible Classroom and presented with the following UI:

       ![Flexible Classroom UI after joining as teacher](https://web-cdn.agora.io/docs-files/1648635720196)

    4. Install Flexible Classroom on a second iOS device. Login with the same credentials but this time set the user role to `Student`.

    5. The `Teacher` and `Student` can now interact and communicate using Flexible Classroom features.

    
  
      
  
      
  
## References [#references]

To ensure communication security in a test or production environment, use a token server to generate tokens. See [Secure authentication with tokens](./build/set-up-your-account-and-authentication/authentication-workflow.mdx).
