Classroom SDK

Updated

This page provides the API reference for the Agora Classroom SDK.

This page provides the API reference for the Agora Classroom SDK across Android, iOS, Web, and Electron.

Android

This page provides the Kotlin API reference of the Agora Classroom SDK for Android.

AgoraClassSdk

AgoraClassSdk is the basic interface of the Agora Classroom SDK and provides the main methods that can be invoked by your app.

version

public static String version();

Gets the SDK version.

Returns

The SDK version.

setConfig

public static void setConfig(AgoraEduSDKConfig agoraEduSDKConfig);

Globally configures the SDK.

Sample code

/** Global Configuration */
// Agora App ID
String appId = "XXX";
// Whether to enable eye care mode
boolean eyeCare = false;
AgoraClassSdk.setConfig(new AgoraClassSdkConfig(appId, eyeCare));

Parameter

ParameterDescription
agoraEduSDKConfigThe SDK global configuration. See AgoraClassSdkConfig.

launch

public static AgoraEduClassRoom launch(@NotNull Context context,
                                       @NotNull AgoraEduLaunchConfig config,
                                       @NotNull AgoraEduLaunchCallback callback);

Launches a flexible classroom.

Sample code

/** Classroom launching configuration */
// The user name
String userName = "XXX";
// The user ID. Must be the same as the user ID that you use for generating a Signaling token.
String userUuid = "XXX";
// The classroom name
String roomName = "XXX";
// The classroom ID
String roomUuid = "XXX";
// The user role
int roleType = AgoraEduRoleType.AgoraEduRoleTypeStudent.getValue();
// The classroom type
int roomType = AgoraEduRoomType.AgoraEduRoomType1V1.getValue()/AgoraEduRoomType.AgoraEduRoomTypeSmall.getValue()/AgoraEduRoomType.AgoraEduRoomTypeBig.getValue();
// The Signaling token
String rtmToken = "";
// The start time (ms) of the class, determined by the first user joining the classroom.
long startTime = System.currentTimeMillis() + 100;
// The duration (ms) of the class, determined by the first user joining the classroom.
long duration = 310L;
// The region where the classroom is located. All clients must set the same region, otherwise, they may fail to communicate with each other.
String region = AgoraEduRegion.cn;

AgoraEduLaunchConfig agoraEduLaunchConfig = new AgoraEduLaunchConfignew AgoraEduLaunchConfig(
    userName, userUuid, roomName, roomUuid, roleType,
    roomType, rtmToken, startTime, duration, region, null, null,
    AgoraBoardFitMode.Retain, streamState, AgoraEduLatencyLevel.AgoraEduLatencyLevelUltraLow,
    null, null);
AgoraClassSdk.launch(MainActivity2.this, agoraEduLaunchConfig, (state) -> {
    Log.e(TAG, "launch-classroom-state:" + state.name());
});

Parameter

ParameterDescription
contextThe context of the app.
configThe classroom launching configuration. See AgoraEduLaunchConfig.
callbackThe SDK uses the AgoraEduLaunchCallback class to report events related to classroom launching to the app.

Returns

The AgoraEduClassRoom class.

configCourseWare

public static void configCourseWare(@NotNull List<AgoraEduCourseware> coursewares);

Configures courseware downloading.

Sample code

/** Construct and configure courseware */
// Configure the courseware
String taskUuid = "xxxxx";
// The courseware download address
String resourceUrl = String.formate("https://convertcdn.netless.link/dynamicConvert/{taskUuid}.zip", taskUuid);
// The courseware name
String resourceName = "xxxxxxx"
// The list of courseware pages
List<SceneInfo> sceneInfos = new ArrayList();
// The link of a converted page
String src = "http://xxxxxxx";
Ppt ppt = new Ppt(src, 360, 640);
SceneInfo sceneInfo = new SceneInfo(1, ppt, "ppt-file-name");
List<SceneInfo> sceneInfos = new ArrayList();
sceneInfos.add(sceneInfo);
// The path for storing the courseware
String scenePath = resourceName + "/" + sceneInfos.get(0).name;
AgoraEduCourseware courseware = new AgoraEduCourseware(resourceName, scenePath, sceneInfos, resourceUrl);
List<AgoraEduCourseware> wares = new ArrayList();
wares.add(courseware);
// Configure the courseware pre-downloading
configCoursewares(wares);

Parameter

ParameterDescription
waresThe courseware pre-download configuration. See AgoraEduCourseware.

downloadCourseWare

public static void downloadCourseWare(@NotNull Context context, @Nullable AgoraEduCoursewarePreloadListener listener)
        throws Exception;

Pre-downloads the courseware.

Sample code

// Download the configured courseware
downloadCoursewares(activityContext, new AgoraEduCoursewarePreloadListener() {
    @Override
    public void onStartDownload(@NotNull AgoraEduCourseware ware) {
    }
    @Override
    public void onProgress(@NotNull AgoraEduCourseware ware, double progress) {
    }
    @Override
    public void onComplete(@NotNull AgoraEduCourseware ware) {
    }
    @Override
    public void onFailed(@NotNull AgoraEduCourseware ware) {
    }
});

Parameter

ParameterDescription
contextThe context of the app.
listenerThe SDK reports events related to courseware preloading to the app through the AgoraEduCoursewarePreloadListener class.

registerExtensionApp

public static void registerExtensionApp(List<AgoraExtAppConfiguration> apps);

Register an extension application by using the ExtApp tool. ExtApp is a tool for embedding extension applications in Flexible Classroom. For details, see Customize Flexible Classroom with ExtApp.

AgoraEduLaunchCallback

The AgoraEduLaunchCallback class reports events related to classroom launching to the app.

onCallback

void onCallback(AgoraEduEvent state);

Reports classroom events.

ParameterDescription
stateThe classroom events. See AgoraEduEvent.

AgoraEduCoursewarePreloadListener

The AgoraEduCoursewarePreloadListener class reports events related to courseware preloading to the app.

onStartDownload

void onStartDownload(@NotNull AgoraEduCourseware ware);

Indicates that the SDK starts downloading the courseware.

ParameterDescription
wareThe courseware pre-download configuration. See AgoraEduCourseware.

onProgress

void onProgress(@NotNull AgoraEduCourseware ware, double progress);

Indicates the progress of courseware pre-downloading.

ParameterDescription
wareThe courseware pre-download configuration. See AgoraEduCourseware.
progressIndicates the progress of courseware pre-downloading.

onComplete

void onComplete(@NotNull AgoraEduCourseware ware);

Indicates that the courseware pre-downloading completes.

ParameterDescription
wareThe courseware pre-download configuration. See AgoraEduCourseware.

onFailed

void onFailed(@NotNull AgoraEduCourseware ware);

The courseware pre-downloading fails.

ParameterDescription
wareThe courseware pre-download configuration. See AgoraEduCourseware.

Type definition

AgoraClassSdkConfig

public class AgoraClassSdkConfig {
    @NotNull
    private String appId;
    private int eyeCare;
}

The SDK global configuration. Used in setConfig.

AttributesDescription
appIdThe Agora App ID. See Get the Agora App ID.
eyeCare

Whether to enable eye care mode:

  • 0: (Default) Disable eye care mode.

  • 1: Enable eye care mode.

AgoraEduLaunchConfig

class AgoraEduLaunchConfig(val userName: String,
                           val userUuid: String,
                           val roomName: String,
                           val roomUuid: String,
                           val roleType: Int = AgoraEduRoleType.AgoraEduRoleTypeStudent.value,
                           val roomType: Int,
                           val rtmToken: String,
                           val startTime: Long?,
                           val duration: Long?,
                           val region: String,
                           var videoEncoderConfig: EduVideoEncoderConfig? = null,
                           val mediaOptions: AgoraEduMediaOptions?,
                           val boardFitMode: AgoraBoardFitMode,
                           val streamState: StreamState?,
                           val latencyLevel: AgoraEduLatencyLevel? = AgoraEduLatencyLevel.AgoraEduLatencyLevelUltraLow,
                           val userProperties: MutableMap<String, String>? = null,
                           val widgetConfigs: MutableList<UiWidgetConfig>? = null) : Parcelable

The classroom launching configuration. Used in launch.

AttributesDescription
userNameThe user name for display in the classroom. The string length must be less than 64 bytes.
userUuid

The user ID. This is the globally unique identifier of a user. Must be the same as the User ID that you use for generating a Signaling token. The string length must be less than 64 bytes. Supported character scopes are:

  • All lowercase English letters: a to z.

All numeric characters.

  • 0-9

  • The space character.

  • "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " , ", "|", "~", ","

roomNameThe room name for display in the classroom. The string length must be less than 64 bytes.
roomUuid

The room ID. This is the globally unique identifier of a classroom. The string length must be less than 64 bytes. Supported character scopes are:

  • All lowercase English letters: a to z.

All numeric characters.

  • 0-9

  • The space character.

  • "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " , ", "|", "~", ","

roleTypeThe role of the user in the classroom. See AgoraEduRoleType.
roomTypeThe classroom type. See AgoraEduRoomType.
rtmTokenThe Signaling token used for authentication. For details, see Secure authentication with tokens.
startTimeThe start time (ms) of the class, determined by the first user joining the classroom.
durationThe duration (ms) of the class, determined by the first user joining the classroom.
regionThe region where the classrooms is located. All clients must use the same region, otherwise, they may fail to communicate with each other. See AgoraEduRegionStr.
videoEncoderConfigVideo encoding configurations, including the width and height, frame rate, and bitrate. See EduVideoEncoderConfig
mediaOptionsThe media options, including media encryption configurations. See AgoraEduMediaOptions.
boardFitModeThe PPT display mode. See AgoraBoardFitMode.
streamStateControls whether students automatically send audio or video streams after they go onto the stage. See StreamState.
latencyLevelThe latency level of an audience member. See AgoraEduLatencyLevel.
userPropertiesUser properties customized by the developer. For details, see How can I set user properties?

AgoraEduEvent

public enum AgoraEduEvent {
    AgoraEduEventFailed(0),
    AgoraEduEventReady(1),
    AgoraEduEventDestroyed(2),
    AgoraEduEventForbidden(3);
}

Classroom events. Reported in onCallback.

AttributesDescription
AgoraEduEventFailed0: The user fails to enter the classroom.
AgoraEduEventReady1: The classroom is ready.
AgoraEduEventDestroyed2: The classroom has been destroyed.
AgoraEduEventForbidden3: The user is forbidden by the Flexible Classroom cloud service and not allowed to enter the classroom.

AgoraEduRoleType

public enum AgoraEduRoleType {
   AgoraEduRoleTypeStudent(2);
}

The role of the user in the classroom. Set in AgoraEduLaunchConfig.

AttributesDescription
AgoraEduRoleTypeStudent2: A student.

AgoraEduRoomType

public enum AgoraEduRoomType {
   AgoraEduRoomType1V1(0),
   AgoraEduRoomTypeSmall(4),
   AgoraEduRoomTypeBig(2);
}

The classroom type. Set in AgoraEduLaunchConfig.

AttributesDescription
AgoraEduRoomType1V10: One-to-one Classroom. An online teacher gives an exclusive lesson to only one student.
AgoraEduRoomTypeBig2: Lecture Hall. A teacher gives an online lesson to multiple students. Students do not send their audio and video by default. The maximum number of users in a classroom is 5,000. During the class, students can raise their hands to attract the teacher's attention and request to speak up. Once the teacher approves, the student can send their audio and video to interact with the teacher.
AgoraEduRoomTypeSmall4: Small Classroom. A teacher gives an online lesson to multiple students. Students do not send their audio and video by default. The maximum number of users in a classroom is 200. During the class, the teacher can invite students to speak up and have real-time audio and video interactions with the teacher.

AgoraBoardFitMode

public enum AgoraBoardFitMode {
    Auto,
    Retain;
}

The PPT display mode on the whiteboard. Set in AgoraEduLaunchConfig.

ParameterDescription
Auto(Default) The PPT display mode is fit, which means uniformly scaling the PPT until one of its dimensions fits the boundary.
RetainIn this mode, if the student manually adjusts the PPT size, the client maintains this size no matter what class the student joins.

StreamState

data class StreamState (
        var videoState:Int,
        var audioState:Int
)

Controls whether students automatically send audio or video streams after they go onto the stage. Set in AgoraEduLaunchConfig.

ParameterDescription
videoState

Whether to send the video stream:

  • 0: (Default) Do not send the video stream.

  • 1: Send the video stream.

audioState

Whether to send the audio stream:

  • 0: (Default) Do not send the audio stream.

  • 1: Send the audio stream.

AgoraEduLatencyLevel

enum class AgoraEduLatencyLevel(val value: Int) {
    AgoraEduLatencyLevelLow(1),
    AgoraEduLatencyLevelUltraLow(2);
}

The latency level of an audience member. Set in AgoraEduLaunchConfig.

ParameterDescription
AgoraEduLatencyLevelLowLow latency. The latency from the sender to the receiver is 1500 ms to 2000 ms.
AgoraEduLatencyLevelUltraLow(Default) Ultra-low latency. The latency from the sender to the receiver is 400 ms to 800 ms.

AgoraEduMediaOptions

class AgoraEduMediaOptions(val encryptionConfigs: AgoraEduMediaEncryptionConfigs?)

Media options. Set in AgoraEduLaunchConfig.

ParameterDescription
encryptionConfigThe media stream encryption configuration. See AgoraEduMediaEncryptionConfig for details.

AgoraEduMediaEncryptionConfig

data class AgoraEduMediaEncryptionConfigs(
        val encryptionKey: String?,
        val encryptionMode: Int
)

The media stream encryption configuration. Used in AgoraEduMediaOptions.

ParameterDescription
modeThe encryption mode. See AgoraEduEncryptMode.
keyThe encryption key.

AgoraEduEncryptMode

enum class AgoraEduEncryptMode(val value: Int) {
    NONE(0),
    AES_128_XTS(1),
    AES_128_ECB(2),
    AES_256_XTS(3),
    SM4_128_ECB(4),
    AES_128_GCM(5),
    AES_256_GCM(6);
}

The media stream encryption configuration. See AgoraEduMediaEncryptionConfig for details.

ParameterDescription
NONENo encryption.
AES_128_XTS128-bit AES encryption, XTS mode.
AES_128_ECB128-bit AES encryption, ECB mode.
AES_256_XTS256-bit AES encryption, XTS mode.
SM4_128_ECB128-bit ECB encryption, SM4 mode.
AES_128_GCM128-bit AES encryption, GCM mode.
AES_256_GCM256-bit AES encryption, GCM mode.

AgoraEduCourseware

data class AgoraEduCourseware(
        val resourceName: String?,
        val scenePath: String?,
        val scenes: List<SceneInfo>?,
        val resourceUrl: String?
) {
}

The courseware pre-download configuration. Used in configCoursewares.

AttributesDescription
resourceNameThe file name.
scenePathThe local path for storing the file. Agora recommends setting this parameter as the combination of resourceName and name of the first SceneInfo object in scenes, such as, resourceName + "/" + sceneInfos.get(0).name.
scenesA list of converted file pages, an array of SceneInfo objects. Flexible Classroom automatically converts files with the suffixes of "ppt", "pptx", "doc", "docx", and "pdf" to formats that can be displayed on the whiteboard in the classroom and then display the file on the whiteboard in pages. Each SceneInfo object represents one page.
resourceUrlThe URL address of the file, such as "https://convertcdn.netless.link/dynamicConvert/{taskUuid}.zip".

SceneInfo

public class SceneInfo {
    private int componentCount;
    private Ppt ppt;
    private String name;
}

The detailed information of a page. Set in AgoraEduCourseware.

AttributesDescription
componentCountThe number of pages.
pptThe detailed information of a converted page. See Ppt.
nameThe page name.

Ppt

public class Ppt {
    private String src;
    private double width;
    private double height;
}

The detailed information of a page displayed on the whiteboard. Set in SceneInfo.

AttributesDescription
srcThe URL address of the converted page.
widthThe width (pixel) of the page.
heightThe height (pixel) of the page.

AgoraEduRegion

object AgoraEduRegion {
    const val default = "CN"
    const val cn = "CN"
    const val na = "NA"
    const val eu = "EU"
    const val ap = "AP"
}

Regions.

AttributesDescription
CNMainland China.
NANorth America.
EUEurope.
APAsia Pacific.

EduVideoEncoderConfig

data class EduVideoEncoderConfig(
        var videoDimensionWidth: Int = 320,
        var videoDimensionHeight: Int = 240,
        var frameRate: Int = 15,
        var bitrate: Int = 200,
        var mirrorMode: Int = EduMirrorMode.AUTO.value
)

The video encoder configuration. Used in AgoraEduLaunchConfig.

  • In the Small Classroom use-case, the default resolution is 120p (160*120).
  • In the One-to-one Classroom and Lecture Hall use-cases, the default resolution is 240p (320*240).
ParameterDescription
widthWidth (pixel) of the video frame.
heightHeight (pixel) of the video frame.
frameRateThe frame rate (fps) of the video. The default value is 15.
bitrateThe bitrate (Kbps) of the video. The default value is 200.
mirrorModeVideo mirror modes. See EduMirrorMode.

EduMirrorMode

enum class EduMirrorMode(val value: Int) {
    AUTO(0),
    ENABLED(1),
    DISABLED(2)
}

Whether to enable mirror mode. Used in EduVideoEncoderConfig.

ParameterDescription
AUTOThe SDK disables mirror mode by default.
ENABLEDEnable mirror mode.
DISABLEDDisable mirror mode.

iOS

This page provides the Swift API reference of the Agora Classroom SDK for iOS.

AgoraClassroomSDK

AgoraClassroomSDK is the basic interface of the Agora Classroom SDK and provides the main methods that can be invoked by your app.

version

(NSString *)version;

Gets the SDK version.

Returns

The SDK version.

setConfig

+ (BOOL)setConfig:(AgoraClassroomSDKConfig *)config;

Globally configures the SDK.

Sample code

/** Global configuration **/
@interface AgoraClassroomSDKConfig : NSObject
// Agora App ID
@property (nonatomic, copy) NSString *appId;
// Whether to enable eye care mode
@property (nonatomic, assign) BOOL eyeCare;
@end
AgoraClassroomSDKConfig *defaultConfig = [[AgoraClassroomSDKConfig alloc] initWithAppId:appId eyeCare:eyeCare];
[AgoraClassroomSDK setConfig:defaultConfig];

Parameter

ParameterDescription
configThe SDK global configuration. See AgoraClassroomSDKConfig.

launch

+ (AgoraEduClassroom * _Nullable)launch:(AgoraEduLaunchConfig *)config
                               delegate:(id<AgoraEduClassroomDelegate> _Nullable)delegate;

Launches a flexible classroom.

Sample code

/** Classroom launching configuration */
// The user name
NSString *userName = @"XXX";
// The user ID. Must be the same as the user ID that you use for generating a Signaling token.
NSString *userUUid = @"XXX";
// The classroom name
NSString *roomName = @"XXX";
// The classroom ID
NSString *roomUuid = @"XXX";
// The user role
AgoraEduRoleType roleType = AgoraEduRoleTypeStudent;
// The classroom type
AgoraEduRoomType roomType = AgoraEduRoomType1V1;
// The Signaling token
NSString *rtmToken = "";
// The start time (ms) of the class, determined by the first user joining the classroom.
NSNumber *startTime = @(XXX);
// The duration (ms) of the class, determined by the first user joining the classroom.
NSNumber *duration = @(1800);

AgoraEduLaunchConfig *config = [[AgoraEduLaunchConfig alloc] initWithUserName:userName userUuid:userUuid roleType:roleType roomName:roomName roomUuid:roomUuid roomType:roomType token:rtmToken startTime:startTime duration:duration];
[AgoraClassroomSDK launch:config delegate:self];

Parameter

ParameterDescription
configThe classroom launching configuration. See AgoraEduLaunchConfig.
delegateThe SDK uses the AgoraEduClassroomDelegate class to report events related to classroom launching to the app.

Returns

The AgoraEduClassroom class.

configCoursewares

+ (void)configCoursewares:(NSArray<AgoraEduCourseware *> *)config;

Configures courseware downloading.

Sample code

/** Construct, configure, and download the courseware */
// The ID of the courseware conversion task
NSString *taskUuid = @"xxxx";
// The courseware download address
NSString *resourceUrl = [NSString stringWithFormat:@"https://convertcdn.netless.link/dynamicConvert/%@/.zip", taskUuid];
// The courseware name
NSString *resourceName = @"XXX";
// The list of courseware pages
NSArray<WhiteScene*> *convertedFileList = @[];
// The path for storing the courseware
// Agora recommends setting this parameter as the combination of resourceName and name of the first object in convertedFileList
NSString *scenePath = [NSString stringWithFormat:@"%@/%@", resourceName, [convertedFileList.firstObject name]];

AgoraEduCourseware *courseware = [[AgoraEduCourseware alloc] initWithResourceName:resourceName scenePath:scenePath scenes:convertedFileList resourceUrl:resourceUrl];
// Configure the courseware pre-downloading
[AgoraClassroomSDK configCoursewares:@[courseware]];

Parameter

ParameterDescription
configThe courseware pre-download configuration. See AgoraEduCourseware.

downloadCoursewares

+ (void)downloadCoursewares:(id<AgoraEduCoursewareDelegate> _Nullable)delegate;

Pre-downloads the courseware.

Sample code

// Download the configured courseware
[AgoraClassroomSDK downloadCoursewares:self];

Parameter

ParameterDescription
delegateThe SDK reports events related to courseware preloading to the app through the AgoraEduCoursewareDelegate class.

registerExtApps

+ (void)registerExtApps:(NSArray<AgoraExtAppConfiguration *> *)apps;

Register an extension application by using the ExtApp tool. ExtApp is a tool for embedding extension applications in Flexible Classroom. For details, see Customize Flexible Classroom with ExtApp.

AgoraEduClassroom

destroy

- (void)destroy;

Release the resources occupied by the AgoraEduClassroom object.

AgoraEduClassroomDelegate

The AgoraEduLaunchCallback class reports events related to classroom launching to your app.

didReceivedEvent

- (void)classroom:(AgoraEduClassroom *)classroom didReceivedEvent:(AgoraEduEvent)event;

Reports classroom events.

Parameter

ParameterDescription
eventThe classroom events. See AgoraEduEvent.

AgoraEduCoursewareDelegate

The AgoraEduCoursewareDelegate class reports events related to courseware preloading to your app.

didProcessChanged

- (void)courseware:(AgoraEduCourseware *)courseware didProcessChanged:(float)process;

Indicates the progress of courseware pre-downloading.

ParameterDescription
progressIndicates the progress of courseware pre-downloading.

didCompleted

- (void)courseware:(AgoraEduCourseware *)courseware idCompleted:(NSError * _Nullable)error;

Indicates that the courseware pre-downloading completes.

ParameterDescription
errorThe error code.

Type definition

AgoraEduEvent

typedef NS_ENUM(NSInteger, AgoraEduEvent) {
    AgoraEduEventFailed = 0,
    AgoraEduEventReady = 1,
    AgoraEduEventDestroyed =2,
};

Classroom events. Reported in the didReceivedEvent callback.

AttributesDescription
AgoraEduEventFailed0: The user fails to enter the classroom.
AgoraEduEventReady1: The classroom is ready.
AgoraEduEventDestroyed2: The classroom has been destroyed.

AgoraEduRoleType

typedef NS_ENUM(NSInteger, AgoraEduRoleType) {
    AgoraEduRoleTypeStudent = 2,
};

The role of the user in the classroom. Set in AgoraEduLaunchConfig.

AttributesDescription
AgoraEduRoleTypeStudent2: A student.

AgoraEduRoomType

typedef NS_ENUM(NSInteger, AgoraEduRoomType) {
    AgoraEduRoomType1V1 = 0,
    AgoraEduRoomTypeSmall = 4,
    AgoraEduRoomTypeBig = 2,
};

The classroom type. Set in AgoraEduLaunchConfig.

AttributesDescription
AgoraEduRoomType1V10: One-to-one Classroom. An online teacher gives an exclusive lesson to only one student.
AgoraEduRoomTypeBig2: Lecture Hall. A teacher gives an online lesson to multiple students. Students do not send their audio and video by default. The maximum number of users in a classroom is 5,000. During the class, students can raise their hands to attract the teacher's attention and request to speak up. Once the teacher approves, the student can send their audio and video to interact with the teacher.
AgoraEduRoomTypeSmall4: Small Classroom. A teacher gives an online lesson to multiple students. Students do not send their audio and video by default. The maximum number of users in a classroom is 200. During the class, the teacher can invite students to speak up on stage and have real-time audio and video interactions with the teacher.

AgoraClassroomSDKConfig

@interface AgoraClassroomSDKConfig : NSObject
@property (nonatomic, copy) NSString *appId;
@property (nonatomic, assign) BOOL eyeCare;
- (instancetype)initWithAppId:(NSString *)appId;
- (instancetype)initWithAppId:(NSString *)appId
                      eyeCare:(BOOL)eyeCare;
@end

The SDK global configuration. Used in setConfig.

AttributesDescription
appIdThe Agora App ID. See Get the Agora App ID.
eyeCare

Whether to enable eye care mode:

  • false: (Default) Disable eye care mode.

  • true: Enable eye care mode.

AgoraEduLaunchConfig

@interface AgoraEduLaunchConfig : NSObject
@property (nonatomic, copy) NSString *userName;
@property (nonatomic, copy) NSString *userUuid;
@property (nonatomic, assign) AgoraEduRoleType roleType;
@property (nonatomic, copy) NSString *roomName;
@property (nonatomic, copy) NSString *roomUuid;
@property (nonatomic, assign) AgoraEduRoomType roomType;
@property (nonatomic, copy) NSString *token;
@property (nonatomic, copy) NSNumber *startTime;
@property (nonatomic, copy, nullable) NSNumber *duration;
@property (nonatomic, copy) NSString *region;
@property (nonatomic, strong, nullable) AgoraEduMediaOptions *mediaOptions;
@property (nonatomic, copy, nullable) NSDictionary<NSString *, NSString *> * userProperties;
@property (nonatomic, assign) AgoraEduStreamState videoState;
@property (nonatomic, assign) AgoraEduStreamState audioState;
@property (nonatomic, strong, nullable) AgoraEduVideoEncoderConfiguration *cameraEncoderConfiguration;
@property (nonatomic, assign) AgoraEduLatencyLevel latencyLevel;
@property (nonatomic, assign) AgoraBoardFitMode boardFitMode;

- (instancetype)initWithUserName:(NSString *)userName
                        userUuid:(NSString *)userUuid
                        roleType:(AgoraEduRoleType)roleType
                        roomName:(NSString *)roomName
                        roomUuid:(NSString *)roomUuid
                        roomType:(AgoraEduRoomType)roomType
                           token:(NSString *)token
                       startTime:(NSNumber * _Nullable)startTime
                        duration:(NSNumber * _Nullable)duration
                  userProperties:(NSDictionary<NSString *, NSString *> * _Nullable)userProperties;
@end

The classroom launching configuration. Used in launch.

AttributesDescription
userNameThe user name for display in the classroom. The string length must be less than 64 bytes.
userUuid

The user ID. This is the globally unique identifier of a user. Must be the same as the User ID that you use for generating a Signaling token. The string length must be less than 64 bytes. Supported character scopes are:

  • All lowercase English letters: a to z.

All numeric characters.

  • 0-9

  • The space character.

  • "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " , ", "|", "~", ","

roomNameThe room name for display in the classroom. The string length must be less than 64 bytes.
roomUuid

The room ID. This is the globally unique identifier of a classroom. The string length must be less than 64 bytes. Supported character scopes are:

  • All lowercase English letters: a to z.

All numeric characters.

  • 0-9

  • The space character.

  • "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " , ", "|", "~", ","

roleTypeThe user's role in the classroom. See AgoraEduRoleType.
roomTypeThe classroom type. See AgoraEduRoomType.
tokenThe Signaling token used for authentication. For details, see Generate a Signaling Token.
startTimeThe start time (ms) of the class, determined by the first user joining the classroom.
durationThe duration (ms) of the class, determined by the first user joining the classroom.
region

The region where the classrooms is located. All clients must use the same region, otherwise, they may fail to communicate with each other. Supported regions are:

  • CN: Mainland China

  • AP: Asia Pacific

  • EU: Europe

  • NA: North America

mediaOptionsMedia options, including the media stream encryption configuration. See AgoraEduMediaOptions for details.
userPropertiesUser properties customized by the developer. For details, see How can I set user properties?
videoStateControls whether students automatically send audio or video streams after they go onto the stage. See AgoraEduStreamState.
audioStateControls whether students automatically send audio or video streams after they go onto the stage. See AgoraEduStreamState.
cameraEncoderConfigurationThe encoding configurations of the video stream captured by the camera, including the width and height, frame rate, and bitrate. For details, see AgoraEduVideoEncoderConfiguration.
latencyLevelThe latency level of an audience member. See AgoraEduLatencyLevel.
boardFitModeThe PPT display mode on the whiteboard. See AgoraBoardFitMode.

AgoraBoardFitMode

@objc public enum AgoraBoardFitMode: Int {
    case auto, retain
}

The PPT display mode on the whiteboard. Set in AgoraEduLaunchConfig.

ParameterDescription
auto(Default) The PPT display mode is fit, which means uniformly scaling the PPT until one of its dimensions fits the boundary.
retainIn this mode, if the student manually adjusts the PPT size, the client maintains this size no matter what class the student joins.

StreamState

@objc public enum AgoraEduStreamState: Int {
    case off = 0, on, `default`
}

Controls whether students automatically send audio or video streams after they go onto the stage. Set in AgoraEduLaunchConfig.

ParameterDescription
off(Default) Students do not automatically send audio and video streams after they go onto the stage.
onStudents automatically send audio and video streams after they go onto the stage.

AgoraEduLatencyLevel

@objc public enum AgoraEduLatencyLevel: Int {
    case low = 0
    case ultraLow
}

The latency level of an audience member. Set in AgoraEduLaunchConfig.

ParameterDescription
lowLow latency. The latency from the sender to the receiver is 1500 ms to 2000 ms.
ultraLow(Default) Ultra-low latency. The latency from the sender to the receiver is 400 ms to 800 ms.

AgoraEduMediaOptions

@interface AgoraEduMediaOptions : NSObject
@property (nonatomic, strong) AgoraEduMediaEncryptionConfig *encryptionConfig;

- (instancetype)initWithConfig:(AgoraEduMediaEncryptionConfig *)encryptionConfig;
@end

Media options. Set in AgoraEduLaunchConfig.

ParameterDescription
encryptionConfigThe media stream encryption configuration. See AgoraEduMediaEncryptionConfig for details.

AgoraEduVideoEncoderConfiguration

@interface AgoraEduVideoEncoderConfiguration : NSObject
@property (nonatomic, assign) NSUInteger width;
@property (nonatomic, assign) NSUInteger height;
@property (nonatomic, assign) NSUInteger frameRate;
@property (nonatomic, assign) NSUInteger bitrate;
@property (nonatomic, assign) AgoraEduCoreMirrorMode mirrorMode;

- (instancetype)initWithWidth:(NSUInteger)width
                       height:(NSUInteger)height
                    frameRate:(NSUInteger)frameRate
                      bitrate:(NSUInteger)bitrate
                   mirrorMode:(AgoraEduCoreMirrorMode)mirrorMode;
@end

The classroom launching configuration. See AgoraEduLaunchConfig.

  • In the Small Classroom use-case, the default resolution is 120p (160*120).
  • In the One-to-one Classroom and Lecture Hall use-cases, the default resolution is 240p (320*240).
ParameterDescription
widthWidth (pixel) of the video frame.
heightHeight (pixel) of the video frame.
frameRateThe frame rate (fps) of the video. The default value is 15.
bitrateThe bitrate (Kbps) of the video. The default value is 200.
mirrorModeVideo mirror modes. See EduMirrorMode.

AgoraEduMediaEncryptionConfig

@interface AgoraEduMediaEncryptionConfig : NSObject
@property (nonatomic, assign) AgoraEduMediaEncryptionMode mode;
@property (nonatomic, copy) NSString *key;

- (instancetype)initWithMode:(AgoraEduMediaEncryptionMode)mode key:(NSString *)key;
@end

The media stream encryption configuration. Used in AgoraEduMediaOptions.

ParameterDescription
modeEncryption mode. See AgoraEduMediaEncryptionMode.
keyThe encryption key.

AgoraEduMediaEncryptionMode

typedef NS_ENUM(NSInteger, AgoraEduMediaEncryptionMode) {
    AgoraEduMediaEncryptionModeAES128XTS = 1,
    AgoraEduMediaEncryptionModeAES128ECB = 2,
    AgoraEduMediaEncryptionModeAES256XTS = 3,
    AgoraEduMediaEncryptionModeAES128GCM = 5,
    AgoraEduMediaEncryptionModeAES256GCM = 6,
};

Media stream encryption mode. Set in AgoraEduMediaEncryptionConfig.

ParameterDescription
AgoraEduMediaEncryptionModeAES128XTS128-bit AES encryption, XTS mode.
AgoraEduMediaEncryptionModeAES128ECB128-bit AES encryption, ECB mode.
AgoraEduMediaEncryptionModeAES256XTS256-bit AES encryption, XTS mode.
AgoraEduMediaEncryptionModeAES128GCM128-bit AES encryption, GCM mode.
AgoraEduMediaEncryptionModeAES256GCM256-bit AES encryption, GCM mode.

AgoraEduCoreMirrorMode

@objc public enum AgoraEduCoreMirrorMode: Int {
    case auto = 0, enabled, disabled
}

Whether to enable mirror mode.

ParameterDescription
autoThe SDK disables mirror mode by default.
enabledEnable mirror mode.
disabledDisable mirror mode.

AgoraEduCourseware

@interface AgoraEduCourseware : NSObject
@property (nonatomic, copy) NSString *resourceName;
@property (nonatomic, copy) NSString *scenePath;
@property (nonatomic, copy) NSString *resourceUrl;
@property (nonatomic, strong) NSArray<WhiteScene *> *scenes;
- (instancetype)initWithResourceName:(NSString *)resourceName
                           scenePath:(NSString *)scenePath
                              scenes:(NSArray<WhiteScene *> *)scenes
                         resourceUrl:(NSString *)resourceUrl;
@end

The courseware pre-download configuration. Used in configCoursewares.

AttributesDescription
resourceNameThe file name.
scenePathThe local path for storing the file. Agora recommends setting this parameter as the combination of resourceName and the name of the first SceneInfo object in scenes.
resourceUrlThe URL address of the file, such as "https://convertcdn.netless.link/dynamicConvert/{taskUuid}.zip".
scenesA list of converted file pages, an array of WhiteScene objects. Flexible Classroom automatically converts files with the suffixes of "ppt", "pptx", "doc", "docx", and "pdf" to formats that can be displayed on the whiteboard in the classroom and then display the file on the whiteboard in pages. Each WhiteScene object represents one page.

WhiteObject

@interface WhiteScene : WhiteObject

- (instancetype)init;
- (instancetype)initWithName:(nullable NSString *)name ppt:(nullable WhitePptPage *)ppt;

@property (nonatomic, copy, readonly) NSString *name;
@property (nonatomic, assign, readonly) NSInteger componentsCount;
@property (nonatomic, strong, readonly, nullable) WhitePptPage *ppt;

@end

The detailed information of a page. Set in AgoraEduCourseware.

AttributesDescription
componentsCountThe number of pages.
pptThe detailed information of a converted page. See WhitePptPage.
nameThe page name.

WhitePptPage

@interface WhitePptPage : WhiteObject

- (instancetype)initWithSrc:(NSString *)src size:(CGSize)size;
- (instancetype)initWithSrc:(NSString *)src preview:(NSString *)url size:(CGSize)size;

@property (nonatomic, copy) NSString *src;
@property (nonatomic, assign) CGFloat width;
@property (nonatomic, assign) CGFloat height;
@property (nonatomic, copy, readonly) NSString *previewURL;
@end

The detailed information of a converted page. Set in SceneInfo.

AttributesDescription
srcThe URL address of the converted page.
widthThe width (pixel) of the page.
heightThe height (pixel) of the page.
previewURLThe URL address of the preview image generated after the dynamic file conversion.

Web

This page provides the TypeScript API reference of the Agora Classroom SDK.

AgoraEduSDK

AgoraEduSDK is the basic interface of the Agora Classroom SDK and provides the main methods that can be invoked by your app.

config

static config(params: ConfigParams):void

Configure the SDK.

Sample code

AgoraEduSDK.config({
  // Agora App ID
  appId: "<YOUR AGORA APPID>",
  // Region
  region: "NA"
})

Parameter

ParameterDescription
paramsThe SDK global configuration. See ConfigParams.

launch

static launch(dom: Element, option: LaunchOption):() => void

Launch a classroom.

Sample code

// Configure courseware
let resourceUuid = "xxxxx"
let resourceName = "my ppt slide"
let sceneInfos = []
let sceneInfo = {
    name: "1",
    ppt: {
        src: "pptx://....",
        width: 480,
        height: 360
    }
}
sceneInfos.push(sceneInfo)

let courseWareList = [{
    resourceUuid,
    resourceName,
    size: 10000,
    updateTime: new Date().getTime(),
    ext: "pptx",
    url:null,
    scenes: sceneInfos,
    taskUuid: "xxxx",
    taskToken: "xxx",
    taskProgress: NetlessTaskProgress
}]

// Launch a classroom
AgoraEduSDK.launch(document.querySelector(`#${this.elem.id}`), {
    rtmToken: "<your rtm token>",
    userUuid: "test",
    userName: "teacher",
    roomUuid: "4321",
    roleType: 1,
    roomType: 4,
    roomName: "demo-class",
    pretest: false,
    language: "en",
    startTime: new Date().getTime(),
    duration: 60 * 30,
    courseWareList: [],
    listener: (evt) => {
        console.log("evt", evt)
    }
})

Parameter

ParameterDescription
domSee Document for details.
optionThe classroom launching configuration. See LaunchOption.

Return value

Returns a function used to destroy the scene and recycle resources.

Type definition

ConfigParams

The SDK global configuration. Used when calling AgoraEduSDK.config.

export type ConfigParams = {
    appId: string;
    region?: string;
};
AttributesDescription
appId(Required) The Agora App ID. See Get the Agora App ID.
region

(Optional) The region where the classrooms is located. Agora recommends you set a region close to the region of the object storage service for your courseware or recording files, because cross-region transmission of large static resources can lead to delay. For example, if your S3 service is in North America, you should set this parameter to NA. All Smart Classroom clients must set the same area, otherwise they cannot communicate with each other. All clients must use the same region, otherwise, they may fail to communicate with each other. Flexible Classroom supports the following regions:

  • CN: Mainland China

  • AP: Asia Pacific

  • EU: Europe

  • NA: North America

ListenerCallback

export type ListenerCallback = (evt: AgoraEduClassroomEvent, ...args: unknown[]) => void;

LaunchOption

The classroom launching configuration. Used when calling AgoraEduSDK.launch.

export type LaunchOption = {
    userUuid: string;
    userName: string;
    roomUuid: string;
    roleType: EduRoleTypeEnum;
    roomType: EduRoomTypeEnum;
    roomServiceType?: EduRoomServiceTypeEnum;
    roomName: string;
    listener: ListenerCallback;
    pretest: boolean;
    rtmToken: string;
    language: LanguageEnum;
    startTime?: number;
    duration: number;
    courseWareList: CourseWareList;
    recordUrl?: string;
    widgets?: {[key: string]: AgoraWidgetBase};
    userFlexProperties?: {[key: string]: any};
    mediaOptions?: MediaOptions;
    latencyLevel?: 1 | 2;
    platform?: Platform;
    virtualBackgroundImages?: string[];
    webrtcExtensionBaseUrl?: string;
    rtcCloudProxyType?: AgoraCloudProxyType;
    rtmCloudProxyEnabled? boolean;
};
ParameterDescription
rtmToken(Required) The Signaling token used for authentication. For details, see Secure authentication with tokens.
userUuid

The user ID. This is the globally unique identifier of a user. Must be the same as the User ID that you use for generating a Signaling token. The string length must be less than 64 bytes. Supported character scopes are:

  • All lowercase English letters: a to z.

All numeric characters.

  • 0-9

  • The space character.

  • "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " , ", "|", "~", ","

userName(Required) The user name for display in the classroom. The string length must be less than 64 bytes.
roomUuid

(Required) The room ID. This is the globally unique identifier of a classroom. The string length must be less than 64 bytes. Supported character scopes are:

  • All lowercase English letters: a to z.

All numeric characters.

  • 0-9

  • The space character.

  • "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " , ", "|", "~", ","

roomName(Required) The room name for display in the classroom. The string length must be less than 64 bytes.
roleType(Required) The role of the user in the classroom. See EduRoleTypeEnum.
roomType(Required) The classroom type. See EduRoomTypeEnum.
roomServiceType(Optional) The service type of big classrooms. See EduRoomServiceTypeEnum.
listener(Required) Classroom event callback, please refer to the event type for details.
pretest

(Required) Whether to enable the pre-class device test:

  • true: Enable the pre-class device test. After this function is enabled, end users can see a page for the device test before entering the classroom. They can check whether their camera, microphone, and speaker can work properly.

  • false: Disable the pre-class device test.

language(Required) The UI language. See LanguageEnum.
startTime(Required) The start time (ms) of the class, determined by the first user joining the classroom.
duration(Required) The duration (second) of the class, determined by the first user joining the classroom.
recordUrl(Optional) The URL address to be recorded. Developers need to pass in the URL of the web page deployed by themselves for page recording, such as https://cn.bing.com/recordUrl.
widgets(Optional) Extensive widgets that extend the classroom capabilities. See Embed a custom plugin for details.
courseWareList(Optional) The configuration of courseware assigned by the educational institution, which cannot be edited by the client. See CourseWareList for details. After passing this object, the SDK downloads the courseware from the Agora cloud storage component to the local when launching the classroom.
userFlexProperties(Optional) User properties customized by the developer.
mediaOptions(Optional) Media stream configurations, including the encryption configuration and the encoding configurations of the screen-sharing stream and the video stream captured by the camera. See MediaOptions for details.
latencyLevel

(Optional) The latency level of an audience member in interactive live streaming:

  • 1: Low latency. The latency from the sender to the receiver is 1500 ms to 2000 ms.

  • (Default) Ultra-low latency. The latency from the sender to the receiver is 400 ms to 800 ms.

virtualBackgroundImages(Optional) The URL of the virtual background image. The domain name of the resource should be the same as the domain name where you deployed smart classroom. Supports PNG and JPG format images.
webrtcExtensionBaseUrl(Optional) The URL or the WebRtc extensions. The default value is https://solutions-apaas.agora.io/static. If you want to use the advanced features such as virtual backgrounds, AI noise suppression, and beauty options, you need to implement the WebRtc extensions and relevant resources in the Flexible Classroom SDK domain. These are the steps: 1. When you run yarn build:demo to complete packaging, the corresponding files are generated in packages/agora-demo-app/build/extensions. 2. Implement the directory in the domain of the Flexible Classroom SDK.
rtcCloudProxy(Optional) The cloud proxy type for the RTC service: AgoraCloudProxyType.
rtmCloudProxyEnabled(Optional) Where to enable cloud proxy for the RTM service.

MediaOptions

export type MediaOptions = {
    cameraEncoderConfiguration?: EduVideoEncoderConfiguration;
    screenShareEncoderConfiguration?: EduVideoEncoderConfiguration;
    encryptionConfig?: MediaEncryptionConfig;
    channelProfile?: ChannelProfile;
    web?: {
        codec: SDK_CODEC;
        mode: SDK_MODE;
    };
};

Media options.

ParameterDescription
cameraEncoderConfigurationThe encoding configuration of the video stream captured by the camera. See EduVideoEncoderConfiguration.
screenShareEncoderConfigurationThe encoding configuration of the screen-sharing stream. See EduVideoEncoderConfiguration.
encryptionConfigThe media stream encryption configuration. See MediaEncryptionConfig.
channelProfileChannel profile configuration. See ChannelProfile for details.
web

Web configuration for browser codec format and channel mode.

  • codec: Browser codec format. Available values are as follows:

    • "vp9": VP9
    • "h264": H.264
  • mode: Channel mode. Available values are as follows:

    • "rtc": Communication mode, commonly used for one-to-one or one-to-many classrooms.
    • "live": Live-streaming mode. It costs less and has a higher latency than the communication mode.

EduVideoEncoderConfiguration

export interface EduVideoEncoderConfiguration {
  width: number;
  height: number;
  frameRate: number;
  bitrate: number;
}

Video encoder configurations.

ParameterDescription
widthWidth (pixel) of the video frame.
heightHeight (pixel) of the video frame.
frameRateThe frame rate (fps) of the video.
bitrateThe bitrate (Kbps) of the video.

MediaEncryptionConfig

export declare interface MediaEncryptionConfig {
  mode: MediaEncryptionMode,
  key: string
}

The media stream encryption configuration. Used in MediaOptions.

ParameterDescription
modeEncryption mode. See MediaEncryptionMode. All users in the same classroom must use the same encryption mode and encryption key.
keyThe encryption key.

MediaEncryptionMode

export enum MediaEncryptionMode {
  AES_128_XTS = 1,
  AES_128_ECB = 2,
  AES_256_XTS = 3,
  AES_128_GCM = 5,
  AES_256_GCM = 6
}

Encryption modes. Used in MediaEncryptionConfig.

ParameterDescription
AES_128_XTS128-bit AES encryption, XTS mode.
AES_128_ECB128-bit AES encryption, ECB mode.
AES_256_XTS256-bit AES encryption, XTS mode.
AES_128_GCM128-bit AES encryption, GCM mode.
AES_256_GCM256-bit AES encryption, GCM mode.

CourseWareList

The courseware pre-download configuration. Used when calling AgoraEduSDK.launch.

export type CloudDriveResourceConvertProgress = {
    totalPageSize: number;
    convertedPageSize: number;
    convertedPercentage: number;
    convertedFileList: {
        name: string;
        ppt: {
            width: number;
            height: number;
            preview?: string;
            src: string;
        };
    }[];
    currentStep: string;
};

export type CourseWareItem = {
    resourceName: string;
    resourceUuid: string;
    ext: string;
    url?: string;
    size: number;
    updateTime: number;
    taskUuid: string;
    conversion: {
        type: string;
        preview: boolean;
        scale: number;
        outputFormat: string;
    };
    taskProgress?: CloudDriveResourceConvertProgress;
};

export type CourseWareList = CourseWareItem[];

CourseWareList is an array that consists of CourseWareItem objects.

[
    {
        resourceName: xxxxxxx,
        resourceUuid: xxxxxxxxx,
        ext: 'pptx',
        url: 'https://xxxxxxxxxxxxxx',
        size: 0,
        updateTime: xxxxxxxx,
        taskUuid: 'xxxxxxxxx',
        conversion: {
            type: 'dynamic',
            preview: true,
            scale: 2,
            outputFormat: 'png',
        },
        taskProgress: {
            totalPageSize: 3,
            convertedPageSize: 3,
            convertedPercentage: 100,
            convertedFileList: [
                {
                    name: '1',
                    ppt: {
                        src: 'pptx://convertcdn.netless.link/dynamicConvert/3bxxxxxxx/1.slide',
                        width: 1280,
                        height: 720,
                        preview: 'dddddddddddddddurl',
                    },
                },
                ...
            ] as any,
            currentStep: '',
        },
    },
],
ParameterDescription
resourceNameThe file name for display in the classroom. The string length must be less than 64 bytes.
resourceUuid

The file ID. This is the unique identifier of a file. The string length must be less than 64 bytes. Supported character scopes are:

  • All lowercase English letters: a to z.

All numeric characters.

  • 0-9

  • The space character.

  • "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " , ", "|", "~", ","

extThe file suffix.
sizeThe file size (bytes).
updateTimeThe latest modified time of the file.
taskUuidThe unique identifier of the file conversion task.
conversion
  • type: A string value that idicates the type of file conversion. You can set it as:
    • static: Convert the PPT, PPTX, DOC, DOCX, or PDF file to a static image in PNG, JPG, JPEG, or WEBP format. The converted file does not retain the animation effects of the original file.
    • dynamic: Convert the PPTX file (edited with Microsoft Office) to an HTML page. The converted file retains the animation effects of the original file.
  • preview: A boolean value that indicates whether you need a preview window.
  • scale: A number value that indicates the conversion scale. If you set it as 1, it means the file doesn't change the size after conversion. The range is [0, 3].
  • outputFormat: A string value that indicates the export format of the images after file conversion. For example, you can set it as "png".
urlThe address of the file. Flexible Classroom clients automatically convert files with the suffixes of "ppt", "pptx", "doc", "docx", and "pdf" to formats that can be displayed on the whiteboard in classrooms. If the suffix name is not listed above, you must set url and leave scenes empty.
taskProgress

The JSON object, CloudDriveResourceConvertProgress, that indicates the progress of the file conversion task. It contains the following fields:

  • totalPageSize: Total page size.
  • convertedPageSize: The number of converted pages.
  • convertedPercentage: The progress of the conversion task, expressed as a percentage.
  • convertedFileList: A list of converted file pages. Each file page represents a record that contains the following fields:
    • name: The name of the file page.
    • ppt: Details of the slide included in the file page, which contains the following fields:
      • width: The width of the slide.
      • height: The height of the slide.
      • src: The download URL of the converted page.
      • preview: The URL of the preview image.
  • currentStep: The current step of the conversion task. The possible values are extracting (extracting the resources), generatingPreview (generating the preview image), mediaTranscode (transcoding the media file), and packaging (packaging the file).

EduRoleTypeEnum

export enum EduRoleTypeEnum {
  audience = 0,
  teacher = 1,
  student = 2,
  assistant = 3
}

The role of the user in the classroom. Set in LaunchOption.

ParameterDescription
audience0: Audience, only used for web page recording.
teacher1: Teacher.
student2: A student.
assistant3: Teaching assistant.

EduRoomTypeEnum

export enum EduRoomTypeEnum {
  Room1v1Class = 0,
  RoomBigClass = 2,
  RoomSmallClass = 4
}

The classroom type. Set in LaunchOption.

ParameterDescription
Room1v1Class0: One-to-one Classroom. An online teacher gives an exclusive lesson to only one student.
RoomBigClass2: Lecture Hall. A teacher gives an online lesson to multiple students. Students do not send their audio and video by default. There is no upper limit on the number of students. During the class, students can raise their hands to attract the teacher's attention and request to speak up. Once the teacher approves, the student can send their audio and video to interact with the teacher.
RoomSmallClass4: Small Classroom. A teacher gives an online lesson to multiple students. Students do not send their audio and video by default. The maximum number of users in a classroom is 500. During the class, the teacher can invite students to speak up on stage and have real-time audio and video interactions with the teacher.

EduRoomServiceTypeEnum

export enum EduRoomServiceTypeEnum {
  LivePremium = 0,
}

The service type used in LaunchOption.

ParameterDescription
LivePremiumThe classroom use the RTC service in the channel profile of live-broadcasting, with a latency of 400 ms. It works the same as interactive big classes.

ChannelProfile

export enum ChannelProfile {
  Communication = 0,
  LiveBroadcasting = 1,
}

Channel profiles, used in MediaOptions.

ValuesDescription
Communicationcommunication mode, commonly used for one-to-one or one-to-many classrooms.
LiveBroadcastinglive-streaming mode. It costs less and has a higher latency than the communication mode.

LanguageEnum

export type LanguageEnum = "en" | "zh"

The language of the user interface. Set in LaunchOption.

ParameterDescription
"en"English.
"zh"Chinese.

AgoraCloudProxyType

The cloud proxy type. Set in LaunchOptions.

ParameterDescription
Automatic0: The automatic mode. In this mode, the SDK will first attempt to connect directly to Agora SDRTN. If the attempt fails, the SDK will automatically fall back to sending media over TLS 443. If you are unsure whether the end user's network environment has a firewall, 'Automatic' mode is recommended as best practice. While transmitting media over TLS 443 may not be as fast and efficient as UDP, connections on TLS 443 can pass through most firewalls.
UDP1: UDP.
TCP2: TCP.

AgoraEduClassroomEvent

Classroom event listener. Set in LaunchOption.

ParameterDescription
Ready1: Entered the classroom successfully.
Destroyed

2: The classroom has been destroyed. Includes the reason for leaving as a parameter:

  • 1: Left the room voluntarily.
  • 2: Have been kicked out of the room.
FailedToJoin3: Failed to enter the classroom.
KickOut101: Being kicked out of the room.
TeacherTurnOnMyMic102: Audio streaming permission is enabled.
TeacherTurnOffMyMic103: Audio streaming permission is turned off.
UserAcceptToStage106: Get on the podium.
UserLeaveStage107: Leave the podium.
RewardReceived108: Reward received. Includes a list of rewarded users as a parameter.
TeacherTurnOnMyCam109: The video streaming permission is enabled.
TeacherTurnOffMyCam110: The video streaming permission has been turned off.
CurrentCamUnplugged111: The current camera device is unplugged.
CurrentMicUnplugged112: The current microphone device is unplugged.
CurrentSpeakerUnplugged113: The current speaker is unplugged.
CaptureScreenPermissionDenied114: No screen capture permission.
BatchRewardReceived117: Receive bulk rewards. Includes a list of rewarded users as a parameter.
InvitedToGroup118: Receive invitation to join group. Includes group information as parameters.
MoveToOtherGroup

119: Moved to other groups. Includes the following parameters:

  • Previous group
  • New group
JoinSubRoom120: Join a group.
LeaveSubRoom121: Leave the group.
AcceptedToGroup

122: The user accepts to join the group. Includes the following parameters:

  • Group ID
  • Accepting user
UserJoinGroup

123: Other users join the group. Includes the following parameters:

  • Group ID
  • List of joining users
UserLeaveGroup

124: Other users leave the group. Includes the following parameters:

  • Group ID
  • List of leaving users
RejectedToGroup

125: The user refuses to join the group. Includes the following parameters:

  • Group ID
  • List of refusing users
RTCStateChanged

201: RTC connection status change. Includes the RTC connection status as a parameter:

  • 0: Not connected
  • 1: Connecting
  • 2: Connected
  • 3: Reconnecting
ClassStateChanged

202: Classroom status changes. Includes the class status as a parameter:

  • 0: Started
  • 1: Not started
  • 2: Dragging
  • 3: Ended

Electron

The Electron Classroom SDK uses the same TypeScript API surface as the Web Classroom SDK. See Web.