Proctor SDK Swift API
本页提供声网 Proctor SDK(iOS)的 Swift API 参考。
AgoraProctorSDK
AgoraProctorSDK 是声网 Proctor SDK 的基础接口类,提供灵动课堂监考场景的核心方法。
init
Swift
- (instancetype)init:(AgoraProctorLaunchConfig *)config
delegate:(id<AgoraProctorSDKDelegate> _Nullable)delegate;
初始化声网 Proctor SDK 对象。
参数
| 参数 | 描述 |
|---|---|
config | 全局配置参数,详见 AgoraProctorLaunchConfig。 |
delegate | (选填)声网 Proctor SDK 回调监听者,详见 AgoraProctorSDKDelegate。 |
launch
Swift
- (void)launch:(void (^)(void))success
failure:(void (^)(NSError *))failure;
启动在线监考场景下的灵动课堂。
参数
| 参数 | 描述 |
|---|---|
success | 启动成功。 |
failure | 启动失败,返回一个 Error。 |
version
Swift
- (NSString *)version;
获取声网 Proctor SDK 的版本。
返回值
- SDK 版本号,String 型。
AgoraProctorSDKDelegate
AgoraProctorSDKDelegate 协议包含了 Proctor SDK 中的回调事件接口。
didExit
Swift
- (void)proctorSDK:(AgoraProctorSDK *)proctor
didExit:(AgoraProctorExitReason)reason;
声网 Proctor SDK 退出回调,会在用户退出房间或被踢出房间时触发。
参数
| 参数 | 描述 |
|---|---|
reason | 退出原因,详见 AgoraProctorExitReason。 |
类型定义
AgoraProctorLaunchConfig
Swift
@interface AgoraProctorLaunchConfig : NSObject
@property (nonatomic, copy) NSString *userName;
@property (nonatomic, copy) NSString *userUuid;
@property (nonatomic, assign) AgoraProctorUserRole userRole;
@property (nonatomic, copy) NSString *roomName;
@property (nonatomic, copy) NSString *roomUuid;
@property (nonatomic, copy) NSString *appId;
@property (nonatomic, copy) NSString *token;
@property (nonatomic, assign) AgoraProctorRegion region;
@property (nonatomic, strong, nullable) AgoraProctorMediaOptions *mediaOptions;
@property (nonatomic, copy, nullable) NSDictionary<NSString *, id> *userProperties;
@property (nonatomic, strong) NSDictionary<NSString *, AgoraWidgetConfig *> *widgets;
- (instancetype)initWithUserName:(NSString *)userName
userUuid:(NSString *)userUuid
userRole:(AgoraProctorUserRole)userRole
roomName:(NSString *)roomName
roomUuid:(NSString *)roomUuid
appId:(NSString *)appId
token:(NSString *)token;
- (instancetype)initWithUserName:(NSString *)userName
userUuid:(NSString *)userUuid
userRole:(AgoraProctorUserRole)userRole
roomName:(NSString *)roomName
roomUuid:(NSString *)roomUuid
appId:(NSString *)appId
token:(NSString *)token
region:(AgoraProctorRegion)region
mediaOptions:(AgoraProctorMediaOptions * _Nullable)mediaOptions
userProperties:(NSDictionary * _Nullable)userProperties;
课堂启动配置,用于 launch 方法。
| 属性 | 描述 |
|---|---|
userName | 用户名。用于课堂内显示,长度在 64 字节以内。 |
userUuid | 用户 ID。这是用户的全局唯一标识,需要与你签发 Token 时使用的 UID 一致。长度在 64 字节以内。 以下为支持的字符集范围(共 89 个字符):
|
userRole | 用户在课堂中的角色,详见 AgoraProctorUserRole。 |
roomName | 课堂名。用于课堂内显示,长度在 64 字节以内。 |
roomUuid | 课堂 ID。这是课堂的全局唯一标识。长度在 64 字节以内。 以下为支持的字符集范围(共 89 个字符):
|
appId | 声网 App ID。 |
token | 用于鉴权的 Token。 详见使用 Token 鉴权。 |
region | 区域,默认值为 CN,即中国大陆。建议设置为靠近你的课件或录制文件对象存储服务所在的区域,因为跨区域传输较大的静态资源会造成比较大的延迟。举例来说,如果你的 S3 服务在北美,则建议将 region 也设为北美区域。所有灵动课堂客户端必须设置相同的区域,否则无法互通。支持的区域详见 AgoraProctorRegion。 |
mediaOptions | (选填)媒体流相关设置,包含媒体流加密,详见 AgoraProctorMediaOptions。 |
userProperties | (选填)由开发者自定义的用户属性,会传入 AgoraEduUserContext 的 userProperties,详见如何设置自定义用户属性。 |
widgets | 传入 Widget ID 和 Widget Config。 |
AgoraProctorMediaOptions
Swift
@interface AgoraProctorMediaOptions : NSObject
@property (nonatomic, strong, nullable) AgoraProctorMediaEncryptionConfig *encryptionConfig;
@property (nonatomic, strong, nullable) AgoraProctorVideoEncoderConfig *videoEncoderConfig;
@property (nonatomic, assign) AgoraProctorLatencyLevel latencyLevel;
- (instancetype)initWithEncryptionConfig:(AgoraProctorMediaEncryptionConfig * _Nullable)encryptionConfig
videoEncoderConfig:(AgoraProctorVideoEncoderConfig * _Nullable)videoEncoderConfig
latencyLevel:(AgoraProctorLatencyLevel)latencyLevel;
媒体流相关设置,用于 AgoraProctorLaunchConfig。
| 属性 | 描述 |
|---|---|
encryptionConfig | (选填)媒体流加密配置,详见 AgoraProctorMediaEncryptionConfig。 |
videoEncoderConfig | (选填)视频编码配置,详见 AgoraProctorVideoEncoderConfig。 |
latencyLevel | 观众端延时级别,默认值为 low,即低延时。详见 AgoraProctorLatencyLevel。 |
AgoraProctorMediaEncryptionConfig
Swift
@interface AgoraProctorMediaEncryptionConfig : NSObject
@property (nonatomic, assign) AgoraProctorMediaEncryptionMode mode;
@property (nonatomic, copy) NSString *key;
- (instancetype)initWithMode:(AgoraProctorMediaEncryptionMode)mode
key:(NSString *)key;
媒体流加密配置,用于 AgoraProctorMediaOptions。
| 属性 | 描述 |
|---|---|
mode | 加密模式,详见 AgoraProctorMediaEncryptionMode。 |
key | 加密密钥。 |
AgoraProctorVideoEncoderConfig
Swift
@interface AgoraProctorVideoEncoderConfig : NSObject
@property (nonatomic, assign) NSUInteger dimensionWidth;
@property (nonatomic, assign) NSUInteger dimensionHeight;
@property (nonatomic, assign) NSUInteger frameRate;
@property (nonatomic, assign) NSUInteger bitRate;
@property (nonatomic, assign) AgoraProctorMirrorMode mirrorMode;
- (instancetype)initWithDimensionWidth:(NSUInteger)dimensionWidth
dimensionHeight:(NSUInteger)dimensionHeight
frameRate:(NSUInteger)frameRate
bitRate:(NSUInteger)bitRate
mirrorMode:(AgoraProctorMirrorMode)mirrorMode;
视频编码参数配置类,用于 AgoraProctorMediaOptions。
| 属性 | 描述 |
|---|---|
dimensionWidth | 视频帧宽度,单位为 pixel,默认值为 320。 |
dimensionHeight | 视频帧高度,单位为 pixel,默认值为 240。 |
frameRate | 视频帧率,单位为 FPS,默认值为 15。 |
bitRate | 视频码率,单位为 Kbps,默认值为 200。 |
mirrorMode | 视频镜像模式,默认值为 AgoraProctorMirrorModeDisable,即关闭镜像模式,详见 AgoraProctorMirrorMode。 |
AgoraProctorMirrorMode
镜像模式,用于 AgoraProctorVideoEncoderConfig。
| 参数 | 描述 |
|---|---|
disabled | 0: 关闭镜像。 |
enabled | 1: 开启镜像。 |
AgoraProctorRegion
区域,用于 AgoraProctorLaunchConfig。
| 属性 | 描述 |
|---|---|
CN | 0: 中国大陆。 |
NA | 1: 北美。 |
EU | 2: 欧洲。 |
AP | 3: 东南亚。 |
AgoraProctorExitReason
退出声网 Proctor SDK 原因,用于 didExit 回调。
| 属性 | 描述 |
|---|---|
normal | 正常退出房间。 |
kickOut | 被踢出房间。 |
AgoraProctorLatencyLevel
观众端延时级别,只对非连麦用户有效。在 AgoraProctorLaunchConfig 中设置。
| 参数 | 描述 |
|---|---|
low | 1: 低延时。发流端与观众端的延时为 1500 ms - 2000 ms。 |
ultraLow | 2: 超低延时。发流端与观众端的延时为 400 ms - 800 ms。 |
AgoraProctorUserRole
用户在课堂中的角色,在 AgoraProctorLaunchConfig 中设置。
| 属性 | 描述 |
|---|---|
invalid | 0: 录制机器人。 |
teacher | 1: 教师。 |
student | 2: 学生。 |
assistant | 3: 助教。 |
observer | 4: 观众。 |
AgoraProctorMediaEncryptionMode
媒体流加密模式,用于 AgoraProctorMediaEncryptionConfig。
| 参数 | 描述 |
|---|---|
None | 0: 不设置加密。 |
AES128XTS | 1: 128 位 AES 加密,XTS 模式。 |
AES128ECB | 2: 128 位 AES 加密,ECB 模式。 |
AES256XTS | 3: 256 位 AES 加密,XTS 模式。 |
SM4128ECB | 4: 128 位 SM4 加密,ECB 模式。 |
AES128GCM | 5: 128 位 AES 加密,GCM 模式。 |
AES256GCM | 6: 256 位 AES 加密,GCM 模式。 |
AES128GCM2 | 7: 128 位 AES 加密,GCM 模式。相比于 AES128GCM 加密模式,AES128GCM2 加密模式安全性更高且需要设置盐。 |
AES256GCM2 | 8: 256 位 AES 加密,GCM 模式。相比于 AES_256_GCM 加密模式,AES256GCM2 加密模式安全性更高且需要设置盐。 |